我正在绘制一个3D的“围栏图”,每个围栏都有多种颜色。我的样本数据可以在这里找到:
https://gist.github.com/anonymous/a926221ea96e92e86332
我用以下方法绘制这些数据:
colors = "red red red red red"
splot for [i=1:words(colors)] 'input.sep.txt' index i u 2:1:3 w lines lc rgb word(colors,i)这条线是毫无问题地画出来的,我相信他们画得是正确的。我的问题是:如何在直线下面填充,使其看起来像一个实心墙(即,一直到0z值)?我尝试使用w pm3d,但是这实际上并没有在轴上显示任何可见的东西。
发布于 2014-08-28 20:34:50
最好的选择是使用pm3d。为此,您必须稍微修改数据文件:必须重复非常行,将复制的z值更改为0,并添加新行,即前两行数据行。
1 1 2
2 1 4必成
1 1 2
1 1 0
2 1 4
2 1 0诸若此类。您仍然需要两个连续的空行后,分开不同的“墙”。
如果您控制了数据输出,则可以更改输出例程,也可以使用命令行工具(如sed )。
sed 's/^\([0-9]* [0-9]* \)\(.*\)$/&\n\1 0\n/' gistfile1.txt或awk
awk '1; {print $1,$2,0,"\n"}' gistfile1.txt去做转换。当然,这是可以在飞行中从内格鲁图。然后是一个完整的、工作的脚本:
filename = 'gistfile1.txt'
sed = '< sed ''s/^\([0-9]* [0-9]* \)\(.*\)$/&\n\1 0\n/'' '
set autoscale cbfix
set palette defined (0 'red', 1 'blue')
set pm3d depthorder
unset colorbox
unset key
set ticslevel 0
splot sed.filename using 1:2:3:(column(-2)) with pm3d在示例数据中使用gnuket4.6.5的结果是:

一些补充说明:
column(-2)使用块号(相邻块由两条空行分隔)作为颜色索引。set autoscale cbfix,您可以更好地控制用于飞机的颜色。set palette defined (0 'red', 1 'green', 2 'blue')。发布于 2014-08-28 14:38:16
这是一个解决办法,而不是一个适当的解决方案,但它可能对您有用。玩filledcurves选项,这并不是真正为3D绘图设计的。你所拥有的,就像这样:
colors = "red red red red red"
splot for [i=1:words(colors)] 'input.sep.txt' index i u 2:1:3 w filledcurve lc rgb \
word(colors,i), for [i=1:words(colors)] 'input.sep.txt' index i u 2:1:3 w l lc "black" lw 2

使用set dgrid3d命令的技巧,您可以增加绘制的垂直行数(在本例中为set dgrid3d 100,2):

直到您对结果(set dgrid3d 200,2)满意为止:

https://stackoverflow.com/questions/25550223
复制相似问题