在matlab中创建一个3D散点图,并用彩色线条连接散乱点组

时间:2015-10-16 12:34:46

标签: matlab matrix plot scatter3d

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

  

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

(我基本上将5个列向量中的 F 矩阵分开)

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矩阵(名为 F6 和 F7 )并使用scatter3()line()命令以及hold on来创建我的3D图形,但它没有做我做的事情通缉。

对于使用scatter3()绘制的每个新点集,已绘制的点集会改变颜色。因此,在line()函数中指定短名称颜色无济于事。

我有哪些选择?在这种情况下,scatter3可能不是最好的功能吗?

修改

plot3()很有前途,但颜色设置有限。事实上,我宁愿避免使用颜色" white"和"黄色",在白色背景上不显示。

1 个答案:

答案 0 :(得分:3)

所以,我假设你要将你的矩阵分成7个,在这种情况下,将它们保存在单元格数组中,如dynamic variables are BAD! 假设你有一个名为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

enter image description here

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