你快到了。 scatter3 提供了几个选项来定义配色方案(参见文档here)。一种是像您现在所做的那样使用标量进行索引。在这种情况下,着色方案是自动的。另一种选择是使用表示 RGB 颜色的三元组值。
例如,对于三种颜色,您可以定义自定义颜色图cmap。
color_1 = [1 0.2 0.4];
color_2 = [0.34 0.65 0.87];
color_3 = [0.5 0.5 0.5];
cmap = [color_1; color_2; color_3];
然后根据您的实际索引创建一个INDEX_color (Nx3) 矩阵
INDEX_color = cmap(INDEX,:);
对于更多组,您可以根据内置颜色图自动创建INDEX_color。 cmap = colormap(jet(10)); 将在 jet 颜色映射之后生成 10x3 RGB 矩阵。
下图
由这段代码给出
A = [rand(20,3); rand(20,3)+1; rand(20,3)+2 ];
INDEX = [ones(20,1); ones(20,1)+1; ones(20,1)+2 ];
color_1 = [1 0.2 0.4];
color_2 = [0.34 0.65 0.87];
color_3 = [0.5 0.5 0.5];
cmap = [color_1; color_2; color_3];
INDEX_color = cmap(INDEX,:);
scatter3(A(:,1), A(:,2), A(:,3), 50, INDEX_color, 'filled')