如何在matlab绘图中指定多条线的颜色?

如何在matlab绘图中指定多条线的颜色?,matlab,plot,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, :)); ho

我使用以下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定义了每行的颜色。

如注释中所述,解决方案是设置
颜色顺序。然后,您可以将其绘制为matlabs常规高性能的矩阵

下面是一个如何设置
ColorOrder


我认为有一种比搞乱颜色顺序更方便的方法。该方法的概念是获取绘制线的句柄,然后使用
set
命令。Matlab提供了彩色地图,可以根据数据集的大小进行缩放,这在这里非常方便

我将修改您的示例,如下所示:

h = plot(ydep, xvar, '.', 'Markersize', 3);
set(h,{'color'},num2cell(cool(length(h)),2));
这将获得第一个代码行中所有虚线的句柄。然后我使用colormap
cool
并将其缩放到与h中的元素数相同的数字。但是,colormap(它给出了一个规则矩阵)不能直接用于
set
命令的参数中。指定多个属性值的一种方法是使用单元格数组,因此本例就是这样做的


凯利·卡尼的回答完全归功于她

对不起。我修改了代码,并在每次迭代中绘制了每个单独的“行”。顺便说一句,我需要自己控制颜色,因为随机颜色的对比度很差,而且我提交给的杂志不接受这个数字。是的,问题是我的解决方案太慢了。如果我只运行一次,就没那么糟糕了。但是我必须运行代码数千次,而且我还需要调整参数,以便获得最佳的数字(在某些情况下,我需要更大的矩阵5000x1000用于行)。我只是想知道是否有任何方法可以让它运行得更快(和一个绘图功能一样快)。谢谢