How to randomize points using a GUI

1 次查看(过去 30 天)
I have created a GUI that has a push button that you can add points to the graph and a button to randomize the added point. I had to plot a singular point and then later created a function that adds points. when I click the randomize button it only randomizes the first point I created but I need it to randomize for all of the points that get added. I'm not sure how to do so but here is what I have created so far:
f= figure;
ax= axes('Parent',f,'Position',[0.05, 0.25, 0.9, 0.7]);
xlim = ([0,1]);
ylim = ([0,1]);
x = 0.25;
y = 0.55;
point_plot_handle = plot(x,y,'d','MarkerFaceColor','m','MarkerSize',75);
hold on;
my_button = uicontrol('style','pushbutton');
set(my_button, 'units', 'normalized', 'position', [0.05,0.05,0.3,0.15])
set(my_button, 'string','Add Point')
set(my_button, 'callback', @add_point)
my_second_button = uicontrol('style','pushbutton');
set(my_second_button, 'units', 'normalized', 'position', [0.35,0.05,0.3,0.15])
set(my_second_button, 'string', 'Clear')
set(my_second_button, 'callback', @clear)
my_third_button = uicontrol('style', 'pushbutton');
set(my_third_button, 'units', 'normalized','position', [0.65,0.05,0.3,0.15])
set(my_third_button, 'string', 'Randomize')
set(my_third_button, 'callback', {@randomize,point_plot_handle});
function randomize(sender, eventdata, h)
new_point = randn(2,1);
set(h,'XData', new_point(1), 'YData', new_point(2));
end
function clear(sender, eventdata)
empty = cla;
end
function add_point(~,~)
l='od+.';
plot(rand,rand,l(randi(4)),'MarkerFaceColor',rand(1,3),'MarkerSize',35);
end

采纳的回答

David Hill
David Hill 2022-11-30
编辑:David Hill 2022-11-30
Please accept my previous answer if it was acceptable to you.
GUI
function GUI()
f= figure;
axes('Parent',f,'Position',[0.05, 0.25, 0.9, 0.7]);
x = 0.25;
y = 0.55;
h = plot(x,y,'d','MarkerFaceColor','m','MarkerSize',35);
ax=gca;
ax.XLim = [0,1];
ax.YLim = [0,1];
hold on;
my_button = uicontrol('style','pushbutton');
set(my_button, 'units', 'normalized', 'position', [0.05,0.05,0.3,0.15])
set(my_button, 'string','Add Point')
set(my_button, 'callback',@add_point)
my_second_button = uicontrol('style','pushbutton');
set(my_second_button, 'units', 'normalized', 'position', [0.35,0.05,0.3,0.15])
set(my_second_button, 'string', 'Clear')
set(my_second_button, 'callback', @clear)
my_third_button = uicontrol('style', 'pushbutton');
set(my_third_button, 'units', 'normalized','position', [0.65,0.05,0.3,0.15])
set(my_third_button, 'string', 'Randomize')
set(my_third_button, 'callback', @randomize);
function randomize(~,~)
for k=1:length(h)
h(k).XData=rand;
h(k).YData=rand;
end
end
function clear(~,~)
cla;
h=[];
end
function add_point(~,~)
l='od+.';
h=[h,plot(rand,rand,l(randi(4)),'MarkerFaceColor',rand(1,3),'MarkerSize',35)];
end
end
  3 个评论
Amanda
Amanda 2022-12-1
my professor talked about storing it in an array by storing all the handles of my plots in it then addind the new plot handle to the end of the existing one. his example was plot_handle_array= [plot_hanlde_array new_plot_handle]. I dont understand this or how to do it
David Hill
David Hill 2022-12-1
The above works. I am storing all the lines in variable h. Just run the function GUI.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Annotations 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by