1

我试着像其他帖子中建议的那样去做。但是这些点没有打印出来。我的错误在哪里:

set decimalsign locale
set datafile separator ";"

set table 'point_data.dat'
    unset dgrid3d
    splot './points.csv' u 1:2:3
unset table

#set pm3d implicit at s
#set pm3d interpolate 1,1 flush begin noftriangles hidden3d 100 corners2color mean
set dgrid3d 50,50,50

set output 'field.pdf'

splot './point_data.dat' u 1:2:3 w points pt 7, \
      './field.csv' u 2:1:3 with lines lt 5 lc rgb "#000000"

set output
exit

感谢帮助

4

1 回答 1

1

我假设你的问题是datafile separator.
如果您查看该point_data.dat文件,我相信它会在列中列出您的点,但不会用;. 因此,当您尝试同时绘制 thepoint_data.dat和 the field.csv(我假设它们也被分隔;)时,这些点很可能不会被绘制,因为 gnuplot 无法解释point_data.dat-file(它使用 的默认分隔符" ")。
有两种方法可以克服这个问题:

  1. 不要使用set datafile separator. 相反,用于awk删除;while 绘图:

    set decimalsign locale
    set table 'point_data.dat'
    unset dgrid3d
    
    splot "< awk 'BEGIN {FS=\";\"} {print $1, $2, $3}' points.csv" u 1:2:3
    
    unset table
    set dgrid3d 50,50,50
    
    splot "point_data.dat" u 1:2:3 w points pt 7, \
          "< awk 'BEGIN {FS=\";\"} {print $1, $2, $3}' field.csv" u 2:1:3 with lines lt 5 lc rgb "#000000"
    

    需要注意的几点:

    • awk-command 中,不要忘记使用带引号的反斜杠:\"否则它会弄乱命令(并导致错误)。
    • 考虑 unsingnot来抑制图例条目或使用定义的标题(例如title "points"),否则整个awk-command 将打印为标题。
  2. 您可以使用multiplot-command(并跳过set table):

    set datafile separator ";"
    
    set xrange [xmin:xmax]
    set yrange [ymin:ymax]
    set zrange [zmin:zmax]
    
    set multiplot
    splot "points.csv" u 1:2:3 w points pt 7 not
    set dgrid3d 50,50,50
    splot "field.csv" u 2:1:3 with lines lt 5 lc rgb "#000000" not
    unset dgrid3d
    unset multiplot
    

    需要注意的几点:

    • 用于not不带图例的打印,否则它们会重叠。如果需要图例,则不能这样使用multiplot,因为它们会重叠。
    • 在绘图之前设置xrange, yrangezrange否则轴范围可能不一致。(请务必将xminetc 替换为您数据范围内的实际值)。
于 2013-07-27T19:49:17.480 回答