如何使用不同的标记绘制多条线

时间:2011-03-06 12:39:37

标签: matlab

我想用MATLAB绘制多行,并且这样做,每行的标记都不同。我知道用颜色可以用ColorSet = hsv(12);来实现。是否有一些像标记这种方法一样简单?

5 个答案:

答案 0 :(得分:10)

好吧,我不知道MATLAB的内置功能,但我会做以下事情。我创建了自己的单元格:

markers = {'+','o','*','.','x','s','d','^','v','>','<','p','h'}

然后以这种方式访问​​它:

markers{mod(i,numel(markers))+1}

我还创建了一个函数getMarker,它可以做到这一点,并且我添加到MATLAB的路径中,以便我可以在所有脚本中访问它。

答案 1 :(得分:4)

x = linspace(0, 2*pi);
y = cos(bsxfun(@plus, x(1:15:end), x'));
figure
m = {'+','o','*','.','x','s','d','^','v','>','<','p','h'};
set(gca(), 'LineStyleOrder',m, 'ColorOrder',[0 0 0], 'NextPlot','replacechildren')
plot(x, y)

答案 2 :(得分:3)

是的,有一个现成的方法:它是LineStyleOrder轴属性。要激活它,您必须禁用ColorOrder属性,该属性优先于前者,默认情况下处于激活状态。您可以执行以下操作:

m = {'+','o','*','.','x','s','d','^','v','>','<','p','h'};
set_marker_order = @() set(gca(), ...
    'LineStyleOrder',m, 'ColorOrder',[0 0 0], ...
    'NextPlot','replacechildren');

其中m值是从help plot的输出手动获取的。 然后在此示例中使用它:

x = linspace(0, 2*pi);
y = cos(bsxfun(@plus, x(1:15:end), x'));
figure
set_marker_order()
plot(x, y)

答案 3 :(得分:2)

以下内容也有帮助。

function testfig

x=0:0.1:10;
y1=sin(x);
y2=cos(x);
m = ['h','o','*','.','x','s','d','^','v','>','<','p','h'];

plot(x,y1,[m(1)])
hold on;
plot(x,y2,[m(2)])

答案 4 :(得分:1)

假设您使用plot,最简单的方法是在命令中添加行类型。 一些可能的选项包括:--:--.。还有标记类型和宽度选项。

例如,此代码将生成具有不同类型标记的多行:

x = -pi:.1:pi;
y = sin(x);
z = cos(x);
t = tan(x);
l = x.^2;
figure();
hold on;
plot (x,y,'--g');
plot (x,z,'-.y');
plot (x,t,'-b');
plot (x,l,':r');
hold off;

生成的图表是: The yellow line is hard to spot, but it's there

要获得更多帮助,请访问:http://www.mathworks.com/help/techdoc/ref/linespec.html