Borrar filtros
Borrar filtros

Adding Legend to Subplot

12 visualizaciones (últimos 30 días)
Ollie Bardsley
Ollie Bardsley el 1 de Dic. de 2020
Respondida: VBBV el 21 de Jul. de 2024 a las 20:33
Hiya,
I've set up the following code to load in a series of .fig files I'm using to create a multipanel figure. I want to generate a legend for underneath each of the 2 columns of this 6x2 figure. Each of the .fig files plots and opens with a legend, but this is lost when I'm putting it into the Subplot. This function is HORRIBLE and I've spent all day trying to do this. Please help!
LF = ["0 1.fig","0 2.fig","10 1.fig","10 2.fig","20 1.fig","20 2.fig","30 1.fig","30 2.fig","40 1.fig","40 2.fig","45 1.fig","45 2.fig"];
%Define new figure
figure1 = figure;
hold on
for i = 1:12
x = subplot(6,2,i,'parent',figure1);
f = hgload(LF(i));
copyobj(allchild(get(f,'CurrentAxes')),x);
x.YLim = [0,25];
x.YTick = [0:5:25];
if i/2 == int32(i/2)
x.XLim = [0 110];
x.XTick = [0:10:110];
else
x.XLim = [0 5e-4];
x.XTick = [0:1e-4:5e-4];
end
end
  1 comentario
amin
amin el 1 de Dic. de 2020
Hi Ollie,
The question is not clear for me.
There is no command to generate legend in your code.
Also, the legend adds text inside a figure, not underneath nor top. You can use 'title' to add a title on top of your figure.
'hgload(LF(i))' loads the figure LF(i) and displays it, if you do not want to have it displayed, you can replace it with:
f = openfig(LF(i),'invisible');
If you explain more, maybe I can help.

Iniciar sesión para comentar.

Respuesta aceptada

VBBV
VBBV el 21 de Jul. de 2024 a las 20:33
@Ollie Bardsley, you need to rearrange the few lines of code inside the for loop as shown below
LF = ["0 1.fig","0 2.fig","10 1.fig","10 2.fig","20 1.fig","20 2.fig","30 1.fig","30 2.fig","40 1.fig","40 2.fig","45 1.fig","45 2.fig"];
% new figure
figure1 = figure;
hold on
%///////Rearrange the following lines after the for loop
for i = 1:12
f = hgload(LF(i)); % first access /load the saved figure using hgload function
ax_new = copyobj(allchild(get(f,'CurrentAxes')),figure1); % copy all the object handles array from saved figure to new figure
x = subplot(6,2,i,'parent',ax_new{1}); % use the desired axes handles to the subplot (cell array)
%//// this code remains same
x.YLim = [0,25];
x.YTick = [0:5:25];
if i/2 == int32(i/2)
x.XLim = [0 110];
x.XTick = [0:10:110];
else
x.XLim = [0 5e-4];
x.XTick = [0:1e-4:5e-4];
end
end

Más respuestas (1)

Divija Aleti
Divija Aleti el 21 de En. de 2021
Hi Ollie,
I understand that you want to be able to copy the legends of the figures, along with their plots, into the subplot but are unable to do so.
I have brought this issue to the notice of our developers. They will investigate the matter further.
Regards,
Divija

Categorías

Más información sobre Printing and Saving en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by