Gnuplot不会绘制(空白)等高线图

时间:2019-07-02 14:51:48

标签: 2d gnuplot contour

我是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”和常见问题解答。

1 个答案:

答案 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

结果:

enter image description here