How to adjust the legend for a variable number of plots?
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
John
am 22 Jan. 2015
Kommentiert: Image Analyst
am 23 Jan. 2015
In each figure I have a variable number of plots. However, in the legend I have all the plots. For instance, in the very first figure, I would want only one plot. How can I adjust this?
clc;
clear all;
a=[1/2,1/3,1/4];
l=-0.1:.05:.1;
p = @(x,a,l) 1/3.*(exp(x.^(a))-1)./(exp(x.^(a))+1) + l;
x=linspace(0,.2,101);
for k2 = 1:length(l)
figure(k2)
for k1 = 1:length(a)
plot(x, p(x,a(k1),l(k2)))
hold all
ar{k1} = sprintf('a = %s',rats(a(k1),3));
end
grid
axis([0 .21 0 .25])
hold off
legend(ar, 'Location','best')
end
0 Kommentare
Akzeptierte Antwort
Image Analyst
am 22 Jan. 2015
You need to check if any p are greater than 0. Those elements < 0 would be not shown since you've set the min y value to 0.
clc;
clear all;
a=[1/2,1/3,1/4];
l=-0.1:.05:.1;
p = @(x,a,l) 1/3.*(exp(x.^(a))-1)./(exp(x.^(a))+1) + l;
x=linspace(0,.2,101);
for k2 = 1:length(l)
figure(k2)
legendCounter = 1;
for k1 = 1:length(a)
pValues = p(x,a(k1),l(k2));
plot(x, pValues)
drawnow;
hold all
if any(pValues >= 0)
ar{legendCounter} = sprintf('a = %s',rats(a(k1),3));
legendCounter = legendCounter + 1;
end
end
grid
axis([0 .21 0 .25])
hold off
legend(ar, 'Location','best')
end
You need to make the colors match for the legend and the plot. It's getting later here so I'll let you do that.
4 Kommentare
Image Analyst
am 23 Jan. 2015
Oh, I see now. You moved the plot inside the if. I guess that's more efficient. I just didn't notice because you set up the axis limits so that negative parts don't show up anyway. By the way, what I always do before posting is to type control-a, control-i in the MATLAB editor to fix the indenting before pasting it here.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Legend 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!