How can I insert my MATLAB figure (.fig) files into multiple subplots?

529 views (last 30 days)
I have two MATLAB figure (.fig) files which I would like to insert into the subplots of a new figure.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 17 Feb 2021
Edited: MathWorks Support Team on 17 Feb 2021
In order to copy MATLAB figure (.fig) files into multiple subplots use the following commands:
h1 = openfig('test1.fig','reuse'); % open figure
ax1 = gca; % get handle to axes of figure
h2 = openfig('test2.fig','reuse');
ax2 = gca;
% test1.fig and test2.fig are the names of the figure files which you would % like to copy into multiple subplots
h3 = figure; %create new figure
s1 = subplot(2,1,1); %create and get handle to the subplot axes
s2 = subplot(2,1,2);
fig1 = get(ax1,'children'); %get handle to all the children in the figure
fig2 = get(ax2,'children');
copyobj(fig1,s1); %copy children to new parent axes i.e. the subplot axes
copyobj(fig2,s2);
For additional information on the COPYOBJ function, refer to the following documentation:
Attached are 2 scripts which will demonstrate how to place multiple FIG files into different subplots.
The file 'savfigs.m' creates 2 figures and saves them into the current working directory. Please run this file first.
The file 'copyaxes.m' opens these figures and then copies them to the different subplot axes.
  4 Comments
Eric Sargent
Eric Sargent on 9 Dec 2020
Starting in R2019b, you can use tiledlayout to manage these axes.
openfig('fig1.fig');
ax1=gca;
openfig('fig2.fig')
ax2=gca;
figure;
tcl=tiledlayout(1,2);
ax1.Parent=tcl;
ax1.Layout.Tile=1;
ax2.Parent=tcl;
ax2.Layout.Tile=2;

Sign in to comment.

More Answers (2)

su yung-chih
su yung-chih on 14 Aug 2017
For some reason, MATLAB may not be able to show the figure in short time. So, user had better add some time-delay after "ax = gac", or the subplot may repeat the same result.
if true
% code
end
ax = gca; pause(2)

Eric Sargent
Eric Sargent on 9 Dec 2020
Starting in R2019b, you can use tiledlayout to manage these axes.
openfig('fig1.fig');
ax1=gca;
openfig('fig2.fig')
ax2=gca;
figure;
tcl=tiledlayout(1,2);
ax1.Parent=tcl;
ax1.Layout.Tile=1;
ax2.Parent=tcl;
ax2.Layout.Tile=2;
  5 Comments

Sign in to comment.

Tags

Products


Release

R2008a

Community Treasure Hunt

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

Start Hunting!

Translated by