我不得不重新排列你的数据文件一点点:
#front
0 0 0
0 0 1
1 0 0
1 0 1
#back
0 1 0
0 1 1
1 1 0
1 1 1
#left
0 0 0
0 1 0
0 0 1
0 1 1
#right
1 0 0
1 1 0
1 0 1
1 1 1
#bottom
0 0 0
1 0 0
0 1 0
1 1 0
#top
0 0 1
1 0 1
0 1 1
1 1 1
然后可以用以下方式绘制:
set pm3d depthorder
splot "datafile.dat" u 1:2:3:-2 w pm3d
虽然这很有效(主要是——在 gnuplot 中按深度顺序排序并不完美),但做更复杂的形状很快就会变得乏味。
基本上,它之所以有效,是因为我在数据文件中分别指定了每个四边形(在本例中为正方形)——四边形由 2 个空行分隔。每个正方形由 4 个顶点组成,按 2 次“扫描”排序。因此,第一次扫描从点 (0,0,0) 到 (0,0,1)。然后下一次扫描从 (1,0, 0) 到 (1,0,1). Gnuplot 然后将扫描连接在一起。
使用这种技术,您还可以制作三角形(三角形只是最后两个点相同的四边形;)。
最后,每个表面的着色由pseudo-column
“-2”完成——实际上只是四边形数。如果您愿意,可以在数据文件中添加第四个字段并将其用作颜色。
但是,我觉得这个使用 gnuplot 的解决方案并不是你真正想要的,因为这种东西并不是 gnuplot 的真正设计目的——可能有一个工具可以更容易地做到这一点——我只是不知道它是什么。