我最近偶然发现了一个例子,其中Gnuplot产生(至少对我来说)一个意想不到的结果,所以我想知道它是否确实是理想的行为。设置如下:
set terminal pngcairo
set output plot3d?"plot1.png":"plot0.png"
unset key
set xtics nomirror
set ytics nomirror
set xr [0.5:2.5]
set yr [-0.5:4.5]
set multiplot layout 1,2
$data0 << EOD
1 2 1
2 4 1
1 3 1
1 0 1
2 2 1
1 1 1
EOD
$data1 << EOD
1 2 1
2 4 1
1 3 1
1 0 1
2 2 1
1 1 1
EOD
if(plot3d){
set view map
splot $data0 w lp, \
'' u 1:2:3:(sprintf("%d", $0)) w labels offset char 0, char -0.5
splot $data1 w lp, \
'' u 1:2:3:(sprintf("%d", $0)) w labels offset char 0, char -0.5
}else{
plot $data0 w lp, \
'' u 1:2:(sprintf("%d", $0)) w labels offset char 0, char -0.5
plot $data1 w lp, \
'' u 1:2:(sprintf("%d", $0)) w labels offset char 0, char -0.5
}
两个数据块的区别仅在于空格,$data0
有两个空行,而$data1
只有一个。使用plot3d=1
,脚本生成(5.0补丁级别6)
有趣的是,数据块$data1
中的第1点和第4点也相互连接。当空行被注释掉时,这条边似乎消失了。挖掘到绘图(plot3d=0
)会产生预期结果:
我可能遗漏了一些显而易见的东西,虽然文档似乎说明了(也许它以某种方式被splot覆盖):
单个空白记录指定
plot
中的不连续性;没有线路会加入 由空白记录分隔的点(如果用线条样式绘制)。
答案 0 :(得分:1)
是的,您描述的行为对idlelib.PyShell.main()
是正确的。实际上,您显示的引用明确提到splot
而不是plot
。对于splot
行为,请参阅&#34; splot&gt;的文档。数据文件&#34;,其中说:
单个空白记录将
splot
数据文件中的数据块分开;splot
将数据块视为函数y-isolines的等价物。没有行会加入由空白记录分隔的点。如果所有数据块包含相同数量的点,gnuplot将在数据块之间绘制交叉等值线,连接相应的点。这被称为&#34;网格数据&#34;,...
因此,通常,单个空行用于构造splot
的网格化数据,或允许使用splot
选择数据点和数据块。
两个空行总是具有相同的含义来分隔两个数据集,可以使用every
选择。