How to adjust the legend for a variable number of plots?
12 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Image Analyst
2015-1-22
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 个评论
Image Analyst
2015-1-23
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Legend 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!