八度为每个点绘制不同的颜色

Octave plot different colour for every point

我遇到了一个具体问题。首先,我正在使用八度音阶。我有一个数据集,其中每一行都具有以下格式:

datarow = [ x, y, z, colourIndex];

数据集的长度无关紧要,但假设它是 10。我希望能够绘制 3d 图,每个点都具有其特定颜色索引的颜色。当然我知道我可以使用 for 循环并单独添加每个点,但我很难相信还没有某种方法可以使用向量来做到这一点。

到目前为止我已经尝试过:

map = cool(); #init colormap
data = initializeData(); #initialize data
plot3(data(:,1),data(:,2),data(:,3),"c" , map(data(:,4))); #doesn't work

如果可以为我的问题做一个单行,有什么想法吗?

使用scatter3:

N_colors = 64;
colormap(cool(N_colors));
# point positions (your data(:, 1:3))
[x, y, z] = peaks (20);
# these are the color indexes in the colormap (your data(:, 4))
c_index = fix(rand(size(x)) * N_colors);
marker_size = 8;

scatter3(x(:), y(:), z(:), marker_size, c_index(:))