参考 gnuplotting 的示例,我试图创建一个三维柱状图,如下所示:
但是,在高角度视图下,depthorder
并不能得到保持:
生成这些图的 gnuplot 命令(版本 5.2)如下:
set terminal pngcairo enhanced size 800,600
set output "cube_depthorder.png"
set cbrange [0:10]
set palette defined ( 1 '#ff4c4d', 2 '#ce4c7d', 3 '#ae559e', 4 '#df866d', 5 '#ffb66d', 6 '#ffe7cf', 7 '#cecece', 8 '#6d6d6d', 9 '#4c4c8e', 10 '#4c4cef' )
set view 60,45,1,1
set xrange [-0.09:1.99]
set xyplane at 0
set yrange [-0.1125:2.0125]
set pm3d at s depthorder border
unset colorbox
splot "-" binary record=(5,4) format="%double%double%double" using 1:2:3 notitle with lines dt solid linecolor rgb "black " , "-" binary record=(5,4) format="%double%double%double" using 1:2:3 notitle with lines dt solid linecolor rgb "black " , "-" binary record=(5,4) format="%double%double%double" using 1:2:3 notitle with lines dt solid linecolor rgb "black " , "-" binary record=(5,4) format="%double%double%double" using 1:2:3 notitle with lines dt solid linecolor rgb "black "
如上所述,splot命令包含四个条目。在将它们发送到splot之前,我已经尝试将这些条目按从高到矮的顺序排序,但是这对
depthorder
没有任何影响。我怀疑
depthorder
通过从四边形中心到绘图视口测量距离并按距离排序来排序。然后有一个角度,高的四边形中心比矮的四边形中心更靠近,因此会以不同的顺序绘制。
这个怀疑正确吗?或者还有其他问题?在这种情况下,有没有解决方案可以“正确地”测量depthorder
?
对于那些希望重新创建这些图表的人,这里有一个包含等值线的数据文件(每行都是五个(x,y,z)点,每个立方体有4行(2个水平和2个垂直),共四个立方体)。
0 1 0
0 1.9 0
0 1.9 2
0 1 2
0 1 0
1 1 0
1 1.9 0
1 1.9 1
1 1 1
1 1 0
0 0 0
0 0.9 0
0 0.9 1
0 0 1
0 0 0
1 0 0
1 0.9 0
1 0.9 0
1 0 0
1 0 0
0.9 1 0
0.9 1.9 0
0.9 1.9 2
0.9 1 2
0.9 1 0
1.9 1 0
1.9 1.9 0
1.9 1.9 1
1.9 1 1
1.9 1 0
0.9 0 0
0.9 0.9 0
0.9 0.9 1
0.9 0 1
0.9 0 0
1.9 0 0
1.9 0.9 0
1.9 0.9 0
1.9 0 0
1.9 0 0
0 1 0
0 1.9 0
0.9 1.9 0
0.9 1 0
0 1 0
1 1 0
1 1.9 0
1.9 1.9 0
1.9 1 0
1 1 0
0 0 0
0 0.9 0
0.9 0.9 0
0.9 0 0
0 0 0
1 0 0
1 0.9 0
1.9 0.9 0
1.9 0 0
1 0 0
0 1 2
0 1.9 2
0.9 1.9 2
0.9 1 2
0 1 2
1 1 1
1 1.9 1
1.9 1.9 1
1.9 1 1
1 1 1
0 0 1
0 0.9 1
0.9 0.9 1
0.9 0 1
0 0 1
1 0 0
1 0.9 0
1.9 0.9 0
1.9 0 0
1 0 0