0

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

4

2 回答 2

1

如评论中所述,解决方案是设置ColorOrder. 然后,您可以将其绘制为具有 matlabs 常规高性能的矩阵。

这是一个如何设置的示例ColorOrder

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

于 2012-12-13T16:14:21.817 回答
0

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

我将修改您的示例如下:

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

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

所有功劳归功于 Kelly Kearney 在Matlab Answers上的回答。

于 2017-04-04T17:49:09.710 回答