Borrar filtros
Borrar filtros

Want to draw two axes using a single popupmenu

2 visualizaciones (últimos 30 días)
ahasan ratul
ahasan ratul el 7 de Abr. de 2018
Respondida: Munish Verma el 12 de Dic. de 2021
I haven't used matlab gui before. I want to draw two plots using a popup menu. Suppose, I want to plot cm and mm values in two axes Using a popup menu which has multiple object names. So each time I select one option from popup menu it shows both cm and mm values in two different axes. Any help with an example is highly appreciated.

Respuesta aceptada

Walter Roberson
Walter Roberson el 7 de Abr. de 2018
function popup1_Callback(hObject, event, handles)
all_strings = get(hObject, 'String');
if ischar(all_strings); all_strings = cellstr(all_strings); end
which_chosen = get(hObject, 'value');
chosen_string = all_strings{which_chosen};
ax1 = handles.axes1;
ax2 = handles.axes2;
switch chosen_string
case 'lollipop':
plot(ax1, 1:20, rand(1,20));
plot(ax2, 1:20, rand(1,20)*10);
case 'ping-pong':
plot(ax1, 1:20, randn(1:20));
plot(ax2, 1:2), randn(1:20)*10);
end
  2 comentarios
ahasan ratul
ahasan ratul el 7 de Abr. de 2018
Editada: Walter Roberson el 7 de Abr. de 2018
I have tried your code but it shows plots for only 1st popup menu. when i select 2nd one, It shows an error and the previous two graphs are not updated to new graphs.
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)untitled('popupmenu1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback
and
following is the code that i used:
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
all_strings = get(hObject, 'String');
if ischar(all_strings); all_strings = cellstr(all_strings); end
which_chosen = get(hObject, 'value');
chosen_string = all_strings{which_chosen};
ax1 = handles.axes1;
ax2 = handles.axes2;
switch chosen_string
case 'head'
plot(ax1, 1:20, rand(1,20));
plot(ax2, 1:20, rand(1,20)*10);
case 'head_end'
plot(ax1, 1:50, randn(1:50));
plot(ax2, 1:50, randn(1:50)*10);
end
Walter Roberson
Walter Roberson el 7 de Abr. de 2018
plot(ax1, 1:50, randn(1:50));
plot(ax2, 1:50, randn(1:50)*10);
should be
plot(ax1, 1:50, randn(1,50));
plot(ax2, 1:50, randn(1,50)*10);

Iniciar sesión para comentar.

Más respuestas (1)

Munish Verma
Munish Verma el 12 de Dic. de 2021
plot(ax1, 1:50, randn(1,50));
plot(ax2, 1:50, randn(1,50)*10);

Categorías

Más información sobre Migrate GUIDE Apps en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by