在 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 矩阵(名为 F6 和 F7)并使用 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
它唯一的问题是它不允许多个标记大小,所以如果你想让点有不同的标记大小,你需要添加另一个循环并一个一个地绘制点。我希望你能从这里得到它 ;)
我有这个矩阵,可以用 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 矩阵(名为 F6 和 F7)并使用 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
它唯一的问题是它不允许多个标记大小,所以如果你想让点有不同的标记大小,你需要添加另一个循环并一个一个地绘制点。我希望你能从这里得到它 ;)