How to put existing figures in one figure together?

23 Ansichten (letzte 30 Tage)
Mibang
Mibang am 14 Apr. 2024
Kommentiert: Voss am 14 Apr. 2024
I have two existing figures ('fig1.fig" and "fig2.fig"), and want to put in one figure together horizontally and vertically (creating 2 figures).
I tried to use "tiledlayout" spending some time, but failed.
Thank you very much,
openfig('fig1.fig')
ans =
Figure (1) with properties: Number: 1 Name: '' Color: [1 1 1] Position: [268.2000 671.0000 560 420.0000] Units: 'pixels' Use GET to show all properties
openfig('fig2.fig')
ans =
Figure (2) with properties: Number: 2 Name: '' Color: [1 1 1] Position: [1325 496 560 420] Units: 'pixels' Use GET to show all properties

Akzeptierte Antwort

Voss
Voss am 14 Apr. 2024
% open the fig files in two new figures
f1 = openfig('fig1.fig','invisible');
f2 = openfig('fig2.fig','invisible');
% get the ConfusionMatrixChart in each figure
cmc1 = f1.Children;
cmc2 = f2.Children;
% alternate way to get the ConfusionMatrixChart in each figure
% cmc1 = findall(f1,'Type','ConfusionMatrixChart');
% cmc2 = findall(f2,'Type','ConfusionMatrixChart');
% create a new figure with a tiledlayout
f = figure();
t = tiledlayout(f,1,2);
% copy the charts into the tiledlayout
h1 = copyobj(cmc1,t);
h2 = copyobj(cmc2,t);
% place them correctly
h1.Layout.Tile = 1;
h2.Layout.Tile = 2;
% same thing, now with a vertical layout
% create a new figure with a tiledlayout
f = figure();
t = tiledlayout(f,2,1);
% copy the charts into the tiledlayout
h1 = copyobj(cmc1,t);
h2 = copyobj(cmc2,t);
% place them correctly
h1.Layout.Tile = 1;
h2.Layout.Tile = 2;
% delete the original figures
delete([f1 f2])
  4 Kommentare
Mibang
Mibang am 14 Apr. 2024
Even more perfect!
Thank you for the bonus!
Voss
Voss am 14 Apr. 2024
You're welcome!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Paul
Paul am 14 Apr. 2024
If subplot layout is acceptable, then ...
% open the fig files in two new figures
f1 = openfig('fig1.fig','Invisible');
f2 = openfig('fig2.fig','invisible');
hnew = figure;
ax1 = copyobj(f1.Children,hnew);
subplot(2,1,1,ax1)
ax2 = copyobj(f2.Children,hnew);
subplot(2,1,2,ax2)
  2 Kommentare
Mibang
Mibang am 14 Apr. 2024
Bearbeitet: Mibang am 14 Apr. 2024
Perfect, again! This is even simpler.
Maybe bonus for me: is it possible to make the labels simpler, i.e., one "True Class" and "Predicted Class"?
Maybe not possible
Mibang
Mibang am 14 Apr. 2024
I want this answer accepted too, but I cannot.
Thank you very much.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Printing and Saving finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by