0

我想通过一次调用来绘制多条线plot(),每条线具有不同的线型。这是一个例子:

两个都

plot([1,2,3]', [4,5;6,7;8,9], {'-o', '-x'})

hs = plot([1,2,3]', [4,5;6,7;8,9])
set(hs, 'LineStyle', {'--'; '-'})

不工作。我尝试了一大堆带有方括号和花括号的神秘组合,但似乎没有任何效果。

我知道可以遍历 Y 中的列并调用plot()每一列(就像在这个问题中一样),但这不是我所追求的。如果可能的话,我真的很想避免在这里使用循环。

谢谢。

PS:我发现这个'prettyPlot'脚本说它可以做这样的事情,但我想知道是否有任何内置的方法可以做到这一点。

PPS:对于任何想要快速解决此问题的人,试试这个:

for i = 1:length(hs)
   set(hs(i), 'Marker', markers{i}); 
   set(hs(i), 'LineStyle', linestyles{i}); 
end

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

4

1 回答 1

1

参考http://www.mathworks.com/help/matlab/ref/plot.html,这是使用单个绘图命令绘制多条线的方法:

plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)

所以你的想法

plot([1,2,3]', [4,5;6,7;8,9], {'-o', '-x'})

必须写成:

plot([1,2,3]', [4,6,8], '-o', [1,2,3]',[5,7,9],'-x')

结果:

带有单个绘图命令的多行

将输入参数重新组织到单元格数组中,并使用 cellfun 将绘图命令应用于每个单元格元素。

x = [1,2,3]';
xdata = {x;x};
ydata = {[4,6,8];[5,7,9]};    
lspec = {'-o';'-x'};

hold all;
cellfun(@plot,xdata,ydata,lspec);
于 2016-10-15T18:50:37.833 回答