使用字符数组为matlab中的散点图点着色

时间:2016-02-14 03:43:05

标签: matlab colors scatter-plot

我有一些我在散点图中绘制的矢量: x,y和z。

我使用scatter3函数绘制这些矢量。

scatter3(x,y,z)

这现在正确地为我提供了散点图。但是,所有点都是蓝色的,我需要为不同颜色的点着色。

为此,我有一个矢量'colors'。颜色与x,y和z的长度相同。颜色是一个字符数组,由matlab中颜色的不同字符组成,例如'b'表示蓝色,'r表示红色',等等。

//一个小例子:colors =='bbbbbyyyrrr'

我意识到我可能会遍历所有点并在绘图后重新着色。然而,模拟产生了大的向量,随着时间的推移,效率非常低。

有没有办法使用颜色矢量为点着色,使得x(3),y(3),z(3)给出的点是彩色(3)?

1 个答案:

答案 0 :(得分:0)

构建一个Map对象以将字符映射到rgb值(基于this table),然后给出一个字符向量,您可以从地图中读取rgb值:

cmap = containers.Map({'y','m','c','r','g','b','w','k'},{[1 1 0],[1 0 1],[0 1 1],[1 0 0],[0 1 0],[0 0 1],[1 1 1],[0 0 0]});
cols = 'bbbbbyyyrrr';
rgb_vals = cell2mat(values(cmap,cellstr(cols(:))));
scatter3(1:11,1:11,1:11,[],rgb_vals)

values函数获取指定键的值,cell2mat将作为values输出的单元格数组转换回scatter3可以处理的矩阵