I have two figures with different plots. I would like to merge them into one figure that contains both plots and with keeping the title of the figure and axis-labels (both figures have the same title and axis-labels). How can I do this in Matlab? I should also add that I am not interested in "do-by-hand" solution.

1 comentario

Ali Benmabrouk
Ali Benmabrouk el 21 de En. de 2015
Movida: Dyuman Joshi el 23 de Nov. de 2023
Hello Friends, I have to merge two matlab figures (please take a look on the images below) in one figure in order to compare contours. How can do that??? Thank you so much.

Iniciar sesión para comentar.

 Respuesta aceptada

Matt Fig
Matt Fig el 24 de Mzo. de 2011

15 votos

As an example,
figure(50)
plot(0:.01:1)
figure(60)
plot((0:.01:1).^2)
Now, do this:
L = findobj(50,'type','line');
copyobj(L,findobj(60,'type','axes'));
If you have different figure numbers, put them in place of the 50 and 60.

10 comentarios

Walter Roberson
Walter Roberson el 24 de Mzo. de 2011
And afterwards, adjust the axes positions and sizes so that the two plots are not on top of each other.
Ernest Chan
Ernest Chan el 25 de Dic. de 2015
Excellent solution: works perfectly!! Thanks!
Imran Rahman
Imran Rahman el 22 de Mayo de 2018
Editada: Imran Rahman el 22 de Mayo de 2018
What if I have more than 2 figures to merge? Can you please tell me the code for this. Thank you.
Walter Roberson
Walter Roberson el 22 de Mayo de 2018
You can use the kind of code I showed in https://www.mathworks.com/matlabcentral/answers/262265-duplicating-an-imshow-image-into-a-new-figure-without-using-imshow#comment_332459, just looping with f1 set to each source figure in turn.
Lorenzo Mattera
Lorenzo Mattera el 14 de Mzo. de 2020
sorry for the silly question but ..
once one has performed the
L = findobj(50,'type','line');
copyobj(L,findobj(60,'type','axes'));
how do you plot the result (superimposed plots)?
any way to keep colors and legend of the individual (original) figures?
thank you
Renzo
David Hasin
David Hasin el 27 de Mayo de 2020
Woked great, thanks!
mohammed
mohammed el 15 de Ag. de 2022
i got error
Error using findobj
Invalid handle
Lisette Hernandez Gonzalez
Lisette Hernandez Gonzalez el 23 de Nov. de 2023
A little bit late but for future reference, just change line for Line and it should work. At certain point matlab became case sensitive
Walter Roberson
Walter Roberson el 23 de Nov. de 2023
L = findobj(50,'type','line');
tells MATLAB to look for line objects starting from the object whose numeric handle is 50 .
In the time since @Matt Fig posted in 2011, MATLAB's graphics interface changed so that now the primary interface the user sees is "handles" instead of numbers for objects.
However, the numeric interface is still present and still works -- especially for the case where the number is a figure number.
Matt's example specifically used figure(50) which asks to create figure with numeric handle 50. That syntax is still in common use, especially with figure(1), figure(2), figure(3), and it is still valid. And if you have created a figure with an integer numeric handle in that way, then findobj() is happy to use the figure number as the first parameter, as long as that figure still exists.
When you use findobj then the 'type' parameter is not case sensitive. The code Matt posted still works exactly as posted
figure(50)
plot(0:.01:1)
figure(60)
plot((0:.01:1).^2)
L = findobj(50,'type','line');
copyobj(L,findobj(60,'type','axes'));

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.

Preguntada:

el 24 de Mzo. de 2011

Movida:

el 23 de Nov. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by