如何根据单独的值向量更改线条的颜色作为绘图的一部分?

时间:2018-02-07 00:13:06

标签: matlab matlab-figure

我有一个存储在350x130矩阵 r 中的值的集合,我用它在Matlab中创建一个简单的图:

figure;
plot(r)

有没有办法使用另一个350x1向量 v r 生成的颜色着色? V包含一个整数集合,在这种情况下,从1到4不等。

我正在成像调用看起来像这样,其中, r 是350x130而 v 是350x1:

figure;
plot(r,v)

1 个答案:

答案 0 :(得分:2)

让我们定义一些示例数据:

r = rand(10,15);
v = randi(4,1,15);

方法1(更有趣):使用以逗号分隔的列表

这会创建一个单元格数组并将其转换为comma-separated list,以plot作为plot(x1, y1, s1, x2, y2, s2, ...)。颜色仅限定义为plot' linespec strings(例如'g''c+')。

linespecs = {'r' 'g' 'b' 'm'};
c = repmat({1:size(r,1)}, 1, size(r,2));
c(2,:) = num2cell(r, 1);
c(3,:) = linespecs(v);
plot(c{:})

方法2(更具可读性和灵活性):使用循环

linespecs = {'r' 'g' 'b' 'm'};
hold on
for k = 1:size(r,2)
    plot(r(:,k), linespecs{v(k)})
end

此方法允许使用colormap指定任意颜色,不限于linespec字符串:

colors = winter(4); % arbitrary colormap
hold on
for k = 1:size(r,2)
    plot(r(:,k), 'color', colors(v(k),:))
end