How to copy a plot from a figure window to a GUI

I have a callback button that does some calculations and then shows 4 graphs in 4 windows. I would like to create a new GUI that gathering all these graphs into one window. In other word, I have two GUIs and I want to pass some graphs between them. How can I do that? Thanks.

Respuestas (1)

Walter Roberson
Walter Roberson el 12 de Ag. de 2015

1 voto

If you want to have a duplicate in the second location, use copyobj(). If you want to move them to the new location, set() the Parent property of the axes. (Note: if you are using legend and you are using R2014a or earlier, then Legend generates an axes with a hidden handle, so be sure to use findall() of the axes not just findobj())

4 comentarios

Haitham
Haitham el 12 de Ag. de 2015
Yes, I want to move the graphs to a new GUI and all the graphs have Legends, but the problem is I didn't get the idea of how to deal with the axes as a handle structure! If you can give an example of how to move a graph to a new GUI it will be appreciated. Thank you.
move_from = handle of first figure
move_to = handle of second figure
axchild = findall(move_from, 'type', 'axes');
set(axchild, 'Parent', move_to);
If you created your GUI using GUIDE, then the function that is the GUI name returns the figure handle. For example,
fig2 = MySecondGUI(); %start second GUI, grab its handle
and then you would use fig2 as handle of second figure in the code above.
I'm not sure if I get it right but I have tried this code: In the first GUI:
hfigure10 = get(figure(10));
setappdata(0,'hfigure10',hfigure10);
hfigure20 = get(figure(20));
setappdata(0,'hfigure20',hfigure20);
hfigure30 = get(figure(30));
setappdata(0,'hfigure30',hfigure30);
hfigure40 = get(figure(40));
setappdata(0,'hfigure40',hfigure40);
GUI_2_screen_results
Then in the second GUI:
axes(handles.axes1);
hfigure10 = getappdata(0,'hfigure10');
axes(handles.axes2);
hfigure20 = getappdata(0,'hfigure20');
axes(handles.axes3);
hfigure30 = getappdata(0,'hfigure30');
axes(handles.axes4);
hfigure40 = getappdata(0,'hfigure40');
After running the code, all the axes were empty and the command window shows that there are no errors in the code!
Haitham
Haitham el 25 de Ag. de 2015
Can you please have a look on this link

Iniciar sesión para comentar.

Categorías

Más información sobre Creating, Deleting, and Querying Graphics Objects en Centro de ayuda y File Exchange.

Productos

Preguntada:

el 12 de Ag. de 2015

Comentada:

el 25 de Ag. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by