【问题标题】:Gnuplot: How to plot points with pm3d?Gnuplot:如何用 pm3d 绘制点?
【发布时间】:2018-09-14 10:26:14
【问题描述】:

我想在 gnuplot 中使用 pm3d 绘制一个包含 16 个给定点的数据文件,但我也希望在图上显示所有这些给定点。这就是我的数据文件 (xyz.dat) 的样子:

# X     Y     Z
  0     0     0.632  
  0     5     0.46
  0     10    0.37
  0     50    0.41
  5     0     0.95
  5     5     0.66
  5     10    0.59
  5     50    0.5
  10    0     1.5
  10    5     0.96
  10    10    0.77
  10    50    0.5
  50    0     1.5
  50    5     1.5
  50    10    1.5
  50    50    0.98

到目前为止,这是我的代码:

 set ticslevel 0  
 set dgrid3d 30,30  
 set palette defined (0 "blue", 0.75 "white", 1.4 "red")  
 set style lines 100 lt 5 lw 0.5  
 set pm3d hidden3d 100  
 set grid  
 set view 74,216  
 unset key  
 splot 'xyz.dat' using 1:2:3 with pm3d

这会产生以下输出:

Output

我对这个结果感到非常高兴,但我想让数据文件中的这 16 个给定点在此图上清晰可见,但我变成了这样:

Outputs with points

我希望这 16 个点(并且只有这 16 个点)清楚地显示在“输出”图片上,但我不知道如何为此更改我的代码。提前谢谢!

【问题讨论】:

    标签: plot 3d gnuplot


    【解决方案1】:

    您遇到的困难不是因为 pm3d,而是因为您通过命令 set dgrid3d 启用了网格表面的自动生成。任何可以成为表面的情节风格都被这个抓住了。您可以通过使用像with labels 这样的非曲面绘图样式来解决此问题。当然,您没有任何实际的标签文本,但您仍然可以绘制一个指示标签位置的点。你的 plot 命令变成了

    splot 'xyz.dat' using 1:2:3 with pm3d, \
          'xyz.dat' using 1:2:3:("") with labels point pt 7
    

    【讨论】:

    • 我第一次使用gnuplot,有没有机会在没有dgrid3d的情况下成为输出图片上的情节?这个标签并不完全适合所有点,但这个解决方案比我尝试过的任何东西都要好,谢谢!
    • 标签中的点符号准确地显示了原始数据点的位置。如果它们不在网格表面上,那是因为网格表面是插值拟合。您可以尝试使用手册中所述的set dgrid3d 命令的各种选项来调整拟合。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多