我试图绘制两个2D标量,一个作为热图,一个作为叠加轮廓,使用以下代码:
set contour base
set cntrparam levels incremental 0,0.25,1.25
unset surface
set table cont2.dat
splot 'vr245.gnu'
unset table
reset
set xrange [1:215]
set yrange [0:3.1415925025940E+00]
set cbrange [7:17]
unset key
set view map
set palette rgbformulae 33,13,10
splot 'f_aveFe_245.gnu' u 1:2:3 with pm3d, "cont2.dat" u 1:2:3 w l
正如您所看到的,轮廓在左侧有伪影。我该如何解决这个问题?谢谢!
答案 0 :(得分:1)
实际上非常有趣。对于与1.25
的水平相对应的特定轮廓,似乎出现了问题。我想我已将问题分离到以下内容。
我们假设我们有一个简单的数据文件
215 2.55865 1.25
212.185 2.56004 1.25
215 2.87839 1.25
215 0.2632 1.25
212.185 0.252052 1.25
215 0.582938 1.25
现在,gnuplot命令
unset key
set view map
set xr [212:215.5]
set yr [0:3]
set xtics nomirror
set ytics nomirror
splot \
'file.dat' w lp, \
'' u 1:2:3:(sprintf("%d", $0)) w labels offset char 0, char -0.5
有趣的是,第1点和第4点也加入了。如果数据文件被修改为
215 2.55865 1.25
212.185 2.56004 1.25
215 2.87839 1.25
#
215 0.2632 1.25
212.185 0.252052 1.25
215 0.582938 1.25
这里似乎有帮助的是复制空白行,即此文件
215 2.55865 1.25
212.185 2.56004 1.25
215 2.87839 1.25
215 0.2632 1.25
212.185 0.252052 1.25
215 0.582938 1.25
要在您的脚本中应用此功能,可以调用例如gawk
并仅复制具有计算轮廓的文件中的所有空白行:
set terminal pngcairo
set output 'fig.png'
set contour base
set cntrparam levels incremental 0,0.25,1.25
unset surface
set table 'cont2.dat'
splot 'vr245.gnu'
unset table
reset
set xrange [1:215]
set yrange [0:pi]
set cbrange [7:17]
unset key
set view map
set palette rgbformulae 33,13,10
splot \
'f_aveFe_245.gnu' u 1:2:3 with pm3d, \
'<gawk "NF==0{print;} {print;}" cont2.dat' u 1:2:3 w l
或者,您可以使用plot
绘制轮廓而不是splot
来解决此问题:
set terminal pngcairo
set output 'fig.png'
set contour base
set cntrparam levels incremental 0,0.25,1.25
unset surface
set table 'cont2.dat'
splot 'vr245.gnu'
unset table
reset
set xrange [1:215]
set yrange [0:pi]
set cbrange [7:17]
unset key
set view map
set palette rgbformulae 33,13,10
set multiplot
set tmargin at screen 0.9
set lmargin at screen 0.1
set rmargin at screen 0.8
set bmargin at screen 0.1
splot \
'f_aveFe_245.gnu' u 1:2:3 with pm3d
unset xtics
unset ytics
unset border
unset key
plot \
'cont2.dat' w l
答案 1 :(得分:1)
您可以选择性地打开或关闭单个图中单个图的曲面轮廓和绘图。在脚本中定义pm3d
和contours
,停用第一个和
reset
set contour base
set cntrparam levels incremental 0,0.25,1.25
set cntrlabel onecolor
set autoscale xfix
set autoscale yfix
set cbrange [7:17]
unset key
set view map
set palette rgbformulae 33,13,10
splot 'f_aveFe_245.gnu' u 1:2:3 with pm3d nocontour, \
'vr245.gnu' u 1:2:3 w l lc rgb "black" nosurface