Matlab - Legend没有显示不同的颜色

时间:2014-12-10 16:55:58

标签: matlab colors legend lines

任何人都可以帮助我吗?我不能用不同的颜色显示传说中的线条。我该怎么做?

a1 = 0;  b1 = 4;
a2 = 4;  b2 = 10;
a3 = 6;  b3 = 20;

x1=a1:.01:b1;
x2=a2:.01:b2;
x3=a3:.01:b3;

f1 = 1 ./ (b1 - a1);
f2 = 1 ./ (b2 - a2);
f3 = 1 ./ (b3 - a3);

plot(x1,f1,'r',x2,f2,'b',x3,f3,'y');
grid
xlabel('0 < x < 7 , 0.01 örnek aralığında') % x ekseni başlığı
ylabel('Üstel dağılımın olasılık yoğunluk fonksiyonu') % y ekseni başlığı
legend('s1','s2','s3')

1 个答案:

答案 0 :(得分:2)

您正在针对标量x1x2x3绘制向量f1f2f3。来自plot()的文档:

  

如果X或Y中的一个是标量而另一个是矢量,那么该图   函数将矢量绘制为标量值处的离散点。

矢量中的每个数据点都相对于相应的f值绘制为单独的lineseries,为您提供2403个单独的线序列。在您的图例调用中,您可以为前3行系列添加图例字符串,这些字符串全部为红色,因为前401个字体为红色。如果您希望绘制水平线,可以使用repmat()

f变量创建向量

使用您的示例:

a1 = 0;  b1 = 4;
a2 = 4;  b2 = 10;
a3 = 6;  b3 = 20;

x1=a1:.01:b1;
x2=a2:.01:b2;
x3=a3:.01:b3;

f1 = repmat((1 ./ (b1 - a1)), size(x1));
f2 = repmat((1 ./ (b2 - a2)), size(x2));
f3 = repmat((1 ./ (b3 - a3)), size(x3));

plot(x1,f1,'r',x2,f2,'b',x3,f3,'y');
grid
xlabel('0 < x < 7 , 0.01 örnek aralığında') % x ekseni başlığı
ylabel('Üstel dağılımın olasılık yoğunluk fonksiyonu') % y ekseni başlığı
legend('s1','s2','s3')

Plot