如何在matlab图中指定多行的颜色?

时间:2012-11-24 04:12:18

标签: matlab plot

我使用以下matlab绘图来绘制多个点

plot(ydep, xvar, '.', 'Markersize', 3);

这里ydep和xvar是1024x300的矩阵,因此将有300条虚线以随机颜色绘制。我的问题是如何为参数中的300行指定颜色?我尝试使用循环来绘制每个'线',但这很慢

for n=1:300
  plot(ydep(:, n), xvar(:, n), '.', 'Markersize', 3, 'color', linecolors(n, :));
  hold on;
end

其中linecolors定义了每一行的颜色。

2 个答案:

答案 0 :(得分:1)

如评论中所述,解决方案是设置ColorOrder。然后你可以将它绘制成一个matlabs常规高性能的矩阵。

以下是如何设置ColorOrder

的示例

http://www.mathworks.com/matlabcentral/answers/19815-explicitly-specifying-line-colors-when-plotting-a-matrix

答案 1 :(得分:0)

我认为比使用ColorOrder更方便。该方法的概念是获取绘制线的句柄,然后使用set命令。 Matlab提供的色彩映射可以缩放到您的数据集大小,这在这里非常方便。

我将按如下方式修改您的示例:

h = plot(ydep, xvar, '.', 'Markersize', 3);
set(h,{'color'},num2cell(cool(length(h)),2));

这将获取第一个代码行中所有虚线的句柄。然后我使用了色图cool并将其缩放到与h中元素数相同的数字。但是,colormap(给出常规矩阵)不能直接在set命令的参数中使用。指定多个属性值的一种方法是使用单元格数组,这就是这个例子的作用。

凯利科尔尼在Matlab Answers上给出了答案。