Borrar filtros
Borrar filtros

How to put existing figures in one figure together?

24 visualizaciones (últimos 30 días)
Mibang
Mibang el 14 de Abr. de 2024 a las 17:31
Comentada: Voss el 14 de Abr. de 2024 a las 18:31
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

Respuesta aceptada

Voss
Voss el 14 de Abr. de 2024 a las 17:44
% 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 comentarios
Mibang
Mibang el 14 de Abr. de 2024 a las 18:30
Even more perfect!
Thank you for the bonus!
Voss
Voss el 14 de Abr. de 2024 a las 18:31
You're welcome!

Iniciar sesión para comentar.

Más respuestas (1)

Paul
Paul el 14 de Abr. de 2024 a las 18:07
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 comentarios
Mibang
Mibang el 14 de Abr. de 2024 a las 18:15
Editada: Mibang el 14 de Abr. de 2024 a las 18:17
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 el 14 de Abr. de 2024 a las 18:23
I want this answer accepted too, but I cannot.
Thank you very much.

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by