subplot of already saved figures

i have somany figures like dyke_tap, dyke_tbp,dyke_tcp and dyke_tdp...... they aare all bar plots and i want to have them side by side in other to compare them. i have seen ways of merging them, but that wont be good for what i want so i want to use a subplot. how can i use a subplot on already saved figures..... example ' having 'dyke_tap, dyke_tbp,dyke_tcp and dyke_tdp' side by side

2 Kommentare

David Sanchez
David Sanchez am 21 Aug. 2013
what is the images extension? .fig? .png?
Iyk
Iyk am 21 Aug. 2013
Bearbeitet: Iyk am 21 Aug. 2013
.fig

Melden Sie sich an, um zu kommentieren.

Antworten (5)

laurie
laurie am 21 Aug. 2013

18 Stimmen

Here is a small bit of code that does just that for two saved figures. The figures need to be saved in the .fig format with this code (hgload only takes .fig figures as inputs), but there might be some way to adapt this code to make it work for other formats.
% Load saved figures
c=hgload('MyFirstFigure.fig');
k=hgload('MySecondFigure.fig');
% Prepare subplots
figure
h(1)=subplot(1,2,1);
h(2)=subplot(1,2,2);
% Paste figures on the subplots
copyobj(allchild(get(c,'CurrentAxes')),h(1));
copyobj(allchild(get(k,'CurrentAxes')),h(2));
% Add legends
l(1)=legend(h(1),'LegendForFirstFigure')
l(2)=legend(h(2),'LegendForSecondFigure')

12 Kommentare

Iyk
Iyk am 21 Aug. 2013
thanks for responding... I did that and it said "**********Error using copyobj Invalid handle**********"....
Try
copyobj(allchild(c), h(1))
copyobj(allchild(k), h(2))
ismet saygu
ismet saygu am 28 Jan. 2016
Bearbeitet: ismet saygu am 28 Jan. 2016
After you load saved figures (like c=hgload('MyFirstFigure.fig'); k=hgload('MySecondFigure.fig');), do not close the figure window
Walter Roberson
Walter Roberson am 28 Jan. 2016
You can close the figure windows once the copying is done.
Jingyun Yang
Jingyun Yang am 4 Okt. 2018
The legends of the fig.s are lost. Is there any way to resolve that? Thanks.
Walter Roberson
Walter Roberson am 5 Okt. 2018
To take into account colorbars, annotations, legends, and some more obscure constructs, a more complete method is needed. See for example https://www.mathworks.com/matlabcentral/answers/262265-duplicating-an-imshow-image-into-a-new-figure-without-using-imshow#comment_332459
Nathaniel H Werner
Nathaniel H Werner am 5 Feb. 2019
I have a similar problem, but I am just plotting different simulation cases of the same data so I only need a single legend for all the variable I am plotting. Is there a way to get the legend to be on the 'northeastoutside' location like in a normal plot but for the entire subplot without messing with the size of any of the individual figures? I need to keep them the same scale for comparison purposes.
Wenyi Xiao
Wenyi Xiao am 11 Jun. 2019
If my original figure are subplots, what should I do?
Walter Roberson
Walter Roberson am 11 Jun. 2019
subplots are just axes.
You probably want to arrange each figure within a uipanel to frame it.
Yunyu Hu
Yunyu Hu am 5 Mai 2020
This method works. But it does not copy the legend to the subplot
Lehung Nguyen
Lehung Nguyen am 13 Mai 2024
Hello,
I used your code and it works.
In the original figure, I use semilogy. The subplot, however, display in the normal scale. How can I fix this ?
Thanks

Melden Sie sich an, um zu kommentieren.

Farhad Sedaghati
Farhad Sedaghati am 22 Jun. 2015
Bearbeitet: Farhad Sedaghati am 22 Jun. 2015

5 Stimmen

You can use the following function to insert all the saved fig files next to each other: http://www.mathworks.com/matlabcentral/fileexchange/51236-subplot
Jesica Gomez
Jesica Gomez am 20 Feb. 2017

2 Stimmen

Hi, does it work for 3d graphs? I'm trying to use the code but it plots 2D graphs.
Thanks
Tasos Ampelas
Tasos Ampelas am 7 Aug. 2018

1 Stimme

Hi everyone,
In the @laurie 's first answer code, is there a way to get only the final figure and not every single one that I have loaded to matlab?
Md Modassir Firdaus
Md Modassir Firdaus am 30 Dez. 2022

0 Stimmen

Hi everone,
You can try this code to create single figure having subplots. Here single plot is in subplot becouse it does not saved figure 1. First save the created plot then comment "savefig".
clc;
close all;
clear;
%%
z1=peaks;
z2=z1+randn(size(z1))/5;
figure(1)
surf(z1) %creating first figure
savefig('PeaksFile1.fig') % save the figure once then comment it
%%%%
figure(2)
surf(z2,'FaceColor','r') %creating second figure
savefig('PeaksFile2.fig')% save the figure once then comment it
%% Loading saved above figure
f1=hgload('PeaksFile1.fig');
f2=hgload('PeaksFile2.fig');
%% creating subplot
figure(3)
h(1)=subplot(1,2,1);
view(3)
grid on
h(2)=subplot(1,2,2);
view(3)
grid on
%%
copyobj(allchild(get(f1,'CurrentAxes')),h(1));
copyobj(allchild(get(f2,'CurrentAxes')),h(2));

Gefragt:

Iyk
am 21 Aug. 2013

Kommentiert:

am 13 Mai 2024

Community Treasure Hunt

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

Start Hunting!

Translated by