我有一个存储在350x130矩阵 r 中的值的集合,我用它在Matlab中创建一个简单的图:
figure;
plot(r)
有没有办法使用另一个350x1向量 v 为 r 生成的颜色着色? V包含一个整数集合,在这种情况下,从1到4不等。
我正在成像调用看起来像这样,其中, r 是350x130而 v 是350x1:
figure;
plot(r,v)
答案 0 :(得分:2)
让我们定义一些示例数据:
r = rand(10,15);
v = randi(4,1,15);
这会创建一个单元格数组并将其转换为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{:})
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