在 matlab 中创建 3D 散点并使用彩色线条连接散点组

create a 3D scatter in matlab and connect groups of scattered points, with coloured lines

我有这个矩阵,可以用 scatter3 在 "Matlab" 中绘制,如果使用以下命令

scatter3( F(:,[1]) , F(:,[2]) , F(:,[3]) , F(:,[4]) , F(:,[5]) )

(我基本上是将 F 矩阵拆分为 5 个列向量)

F =

   52.5000   12.6000  288.0000   20.0000    1.0000
   52.5000    6.3000  408.0000   20.0000    1.0000
   52.5000    4.8000  467.0000   20.0000    1.0000
   52.5000    3.5000  559.0000   20.0000    1.0000
   52.5000    2.0000  730.0000   20.0000    1.0000
   52.5000    1.3000  902.0000   20.0000    1.0000
   26.2500   12.6000  203.0000   20.0000    2.0000
   26.2500    6.3000  288.0000   20.0000    2.0000
   26.2500    4.8000  332.0000   20.0000    2.0000
   26.2500    3.5000  389.0000   20.0000    2.0000
   26.2500    2.0000  516.0000   20.0000    2.0000
   26.2500    1.3000  637.0000   20.0000    2.0000
   10.0000   12.6000  125.0000   20.0000    3.0000
   10.0000    6.3000  177.0000   20.0000    3.0000
   10.0000    4.8000  204.0000   20.0000    3.0000
   10.0000    3.5000  240.0000   20.0000    3.0000
   10.0000    2.0000  318.0000   20.0000    3.0000
   10.0000    1.3000  392.0000   20.0000    3.0000
    5.0000   12.6000   88.0000   20.0000    4.0000
    5.0000    6.3000  125.0000   20.0000    4.0000
    5.0000    4.8000  144.0000   20.0000    4.0000
    5.0000    3.5000  169.0000   20.0000    4.0000
    5.0000    2.0000  224.0000   20.0000    4.0000
    5.0000    1.3000  277.0000   20.0000    4.0000
    2.0000   12.6000   55.0000   20.0000    5.0000
    2.0000    6.3000   78.0000   20.0000    5.0000
    2.0000    4.8000   90.0000   20.0000    5.0000
    2.0000    3.5000  106.0000   20.0000    5.0000
    2.0000    2.0000  141.0000   20.0000    5.0000
    2.0000    1.3000  175.0000   20.0000    5.0000
    1.0000    6.3000   55.0000   20.0000    6.0000
    1.0000    4.8000   63.0000   20.0000    6.0000
    1.0000    3.5000   75.0000   20.0000    6.0000
    1.0000    2.0000   99.0000   20.0000    6.0000
    1.0000    1.3000  123.0000   20.0000    6.0000
    0.5000    6.3000   38.0000   20.0000    7.0000
    0.5000    4.8000   44.0000   20.0000    7.0000
    0.5000    3.5000   52.0000   20.0000    7.0000
    0.5000    2.0000   70.0000   20.0000    7.0000
    0.5000    1.3000   86.0000   20.0000    7.0000

如果绘制此图,您会看到这些点被分为 7 个相同颜色的组(取自 F 矩阵的第 5 列)。

我想绘制连接相同颜色点的线。当然,线条应该与它们连接的点具有相同的颜色。

我试图将 F 矩阵拆分为五个 6x5 矩阵(名为 F1-F5) 和 2 个 5x5 矩阵(名为 F6F7)并使用 scatter3() 以及 line() 命令和 hold on 来创建我的 3D 图形,但它没有达到我想要的效果。

对于使用 scatter3() 绘制的每组新点,已经绘制的点集会改变颜色。所以在 line() 函数中分配一个短名称颜色没有帮助。

我有什么选择?也许 scatter3 不是在这种情况下使用的最佳函数?

编辑

plot3() 很有前途,但颜色集有限。事实上,我宁愿避免使用颜色 "white" 和 "yellow",它们在白色背景上显示效果不佳。

因此,我假设您要将矩阵分成 7 个,在这种情况下,并将它们保存在元胞数组中,如 ! 假设您有一个名为 F 的元胞数组,这有效:

C=hsv(7);
hold on
for ii=1:size(F,2)
   % //plot lines
   plot3(F{ii}(:,1),F{ii}(:,2),F{ii}(:,3),'Color',C(ii,:));
   % // plot points  
   plot3(F{ii}(:,1),F{ii}(:,2),F{ii}(:,3),'.','MarkerSize',F{ii}(1,4),'Color',C(ii,:)); 
end

它唯一的问题是它不允许多个标记大小,所以如果你想让点有不同的标记大小,你需要添加另一个循环并一个一个地绘制点。我希望你能从这里得到它 ;)