我想用MATLAB绘制多行,并且这样做,每行的标记都不同。我知道用颜色可以用ColorSet = hsv(12);
来实现。是否有一些像标记这种方法一样简单?
答案 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;
生成的图表是:
要获得更多帮助,请访问:http://www.mathworks.com/help/techdoc/ref/linespec.html