Adding Legend to Subplot
8 views (last 30 days)
Show older comments
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 Comment
amin
on 1 Dec 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.
Accepted Answer
VBBV
on 21 Jul 2024
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
0 Comments
More Answers (1)
Divija Aleti
on 21 Jan 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
0 Comments
See Also
Categories
Find more on Printing and Saving 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!