我有一些我在散点图中绘制的矢量: x,y和z。
我使用scatter3函数绘制这些矢量。
scatter3(x,y,z)
这现在正确地为我提供了散点图。但是,所有点都是蓝色的,我需要为不同颜色的点着色。
为此,我有一个矢量'colors'。颜色与x,y和z的长度相同。颜色是一个字符数组,由matlab中颜色的不同字符组成,例如'b'表示蓝色,'r表示红色',等等。
//一个小例子:colors =='bbbbbyyyrrr'
我意识到我可能会遍历所有点并在绘图后重新着色。然而,模拟产生了大的向量,随着时间的推移,效率非常低。
有没有办法使用颜色矢量为点着色,使得x(3),y(3),z(3)给出的点是彩色(3)?
答案 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
可以处理的矩阵