How to randomize points using a GUI

1 visualizzazione (ultimi 30 giorni)
Amanda
Amanda il 30 Nov 2022
Commentato: David Hill il 1 Dic 2022
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

Risposta accettata

David Hill
David Hill il 30 Nov 2022
Modificato: David Hill il 30 Nov 2022
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 Commenti
Amanda
Amanda il 1 Dic 2022
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 il 1 Dic 2022
The above works. I am storing all the lines in variable h. Just run the function GUI.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by