我是gnuplot的新手,正在尝试使用文本文件中的xyz数据绘制轮廓图。 我尝试了许多不同的方法,但只给出了空白图。
数据在Google云端硬盘中:https://drive.google.com/open?id=1x-NAD9Vs8wyv9QbDgjcaT9SujHlHChAd
set contour base
set pm3d
unset surface
set view map
set xrange [1000:4000]
set yrange [0.2:0.395]
set zrange [0:40000]
splot "relax.txt" using 1:2:3
以下错误消息: 警告:单等值线(扫描)不足以用于pm3d图。 提示:数据文件中缺少空白行?请参阅“帮助pm3d”和常见问题解答。
答案 0 :(得分:0)
问题是gnuplot在每一行(矩阵)之后都需要一个空行(例如,当第1列的值更改时)。 因此,您可以自己手动插入空行,也可以使用外部工具插入空行,或者让gnuplot完成。您将数据绘制到虚拟表(数据块)中,然后将其打印到另一个数据块,并在第1列的值更改时插入空行。有点麻烦,但可以。需要gnuplot> = 5.2。
代码:
### contour plot, addding empty lines to raw data
reset session
set contour base
set pm3d
set cntrparam level 10
unset surface
set view map
set size 0.9,0.9 # shrink the size a little otherwise colorbar numbers will be outside canvas
### insert empty lines everytime when column 1 changes its value
set table $Dummy # initialize a table (datablock) named $Dummy
plot "relax.txt" u 1:2:3 with table # plot datafile into a datablock $Dummy
unset table # close the table
set print $Data # set print output to datablock $Data
check="" # initialize your comparison variable to empty string
do for [i=1:|$Dummy|] { # loop the datablock $Dummy by lines
if (check ne word($Dummy[i],1)) { print "\n" } # comparison: if values are not equal insert a line
print $Dummy[i] # print current line to datablock $Data
check = word($Dummy[i],1) # assign latest value to variable "check"
}
set print # close the datablock $Data
splot $Data u 1:2:3 w l notitle
### end of code
结果: