subplot of already saved figures
    114 views (last 30 days)
  
       Show older comments
    
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 Comments
Answers (5)
  laurie
      
 on 21 Aug 2013
        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 Comments
  Walter Roberson
      
      
 on 5 May 2020
				Which method were you using, Yunyu Hu? Did you follow to https://www.mathworks.com/matlabcentral/answers/262265-duplicating-an-imshow-image-into-a-new-figure-without-using-imshow#comment_332459 ?
  Lehung Nguyen
 on 13 May 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
  Farhad Sedaghati
      
 on 22 Jun 2015
        
      Edited: Farhad Sedaghati
      
 on 22 Jun 2015
  
      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
0 Comments
  Jesica Gomez
 on 20 Feb 2017
        Hi, does it work for 3d graphs? I'm trying to use the code but it plots 2D graphs.
Thanks
0 Comments
  Tasos Ampelas
 on 7 Aug 2018
        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?
0 Comments
  Md Modassir Firdaus
 on 30 Dec 2022
        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));
0 Comments
See Also
Categories
				Find more on Graphics Object Properties in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!












