【问题标题】:Gnuplot plot 3D data on xy graph with contoursGnuplot 在带有轮廓的 xy 图形上绘制 3D 数据
【发布时间】:2020-12-25 15:01:46
【问题描述】:

我尝试在带有轮廓的 xy 平面图上绘制 3D 数据。我设法获得了彩色地图,但我几乎没有问题。 我的数据分 3 列(见下面的代码),每行之间有空格。

0.000000000 0.897777778 0.000000000  
0.000000000 0.906666667 0.000000000  
0.000000000 0.915555556 0.000000000  
0.000000000 0.924444444 0.000000000  
0.000000000 0.933333333 0.000000000  
0.000000000 0.942222222 0.000000000  
0.000000000 0.951111111 0.000000000  
0.000000000 0.960000000 0.000000000  
0.000000000 0.968888889 0.000000000  
0.000000000 0.977777778 0.000000000  
0.000000000 0.986666667 0.000000000  
0.000000000 0.995555556 0.000000000  

0.111111111 0.453837597 0.008893913  
0.111111111 0.462736374 0.009285188  
0.111111111 0.471635150 0.009686812  
0.111111111 0.480533927 0.010098938  
0.111111111 0.489432703 0.010521720  
0.111111111 0.498331479 0.010955318  
0.111111111 0.507230256 0.011399894  
0.111111111 0.516129032 0.011855617  

我的代码如下:

set terminal postscript eps color enhanced "Helvetica" 14
set output 'phiCH_TpFR.eps'
set contour base
set style textbox opaque noborder
unset surface
set style textbox opaque noborder
set cntrparam level discrete 0.5,1,1.5,2,2.5,3
set cntrparam bspline
set isosamples 250, 250
set view map
set xrange [0:10]
set yrange [0.55:0.95]
set cbrange [0:4]
set dgrid3d 50,50,50 gauss .005, .035

set table "contour_CH.txt"
splot "data_sensibilite_correlation_Tpfr_CH"
unset table

unset contour
set surface
set table "dgrid_CH.txt"
splot "data_sensibilite_correlation_Tpfr_CH"
unset table

reset
set pm3d map
unset key
set xrange [0:10]
set yrange [0.55:0.95]
set cbrange [0:4]
set xlabel "{/Symbol e}_{/Symbol q} [%]"
set ylabel "T_b / T_{w hs}"
set cblabel "{/Symbol e}_{{/Symbol F} hs} [%]"
splot 'dgrid_CH.txt' w pm3d, 'contour_CH.txt' w l lc rgb "black", 'contour_CH.txt' every 10 w labels

我得到以下图表:

我的问题如下:

  1. 我没有设法得到等高线图的标签。我能做些什么来解决这个问题?我注意到在文件“contour_CH.txt”中并非所有的轮廓都有标签。我不知道这是否是我的问题的原因。

    # 轮廓 1,标签:2.5
    7.29125 0.900642 2.5
    7.26953 0.901372 2.5
    7.24415 0.902123 2.5
    7.21428 0.902917 2.5
    7.18137 0.903743 2.5
    7.14745 0.904582 2.5
    7.11456 0.905415 2.5
    7.08473 0.906223 2.5
    7.05941 0.906997 2.5
    7.03775 0.907755 2.5
    7.0183 0.908527 2.5
    6.99961 0.909341 2.5
    ....

    # 轮廓 2,标签:
    9.88889 0.816038 2.5
    9.80771 0.818407 2.5
    9.75248 0.820019 2.5
    ....

  2. 我的坐标轴和颜色图之间有一个空白区域。我不明白为什么,因为我的数据比绘图范围更宽。

提前感谢您的回答,

马丁

【问题讨论】:

  • 请以文字形式发布数据,而不是图片形式。
  • 你检查过这个吗? stackoverflow.com/a/63788443/7295599
  • 您的最小/最大 x 和 y 值是多少?我猜 gnuplot 会自动尝试在最后制作“漂亮”的 tic 数字,这里是:xrange[0:10] 和 yrange[0.55:0.95]。如果您不想要空白,请将范围值设置为精确到 x 和 y 的最小/最大值。
  • 感谢您的回答,是的,我检查了您的链接,但无法使其正常工作。复制/粘贴建议的代码并用我的数据替换会导致警告消息:“警告:无法为非网格数据绘制轮廓。请使用“set dgrid3d”。”
  • 关于最小/最大 x 和 y 值,我的 dgrid_CH.txt 文件的所有等值曲线都包含 y 轴低于 0.5 和高于 0.99 的值。对于 x 轴,确实是 9.89 而不是 10。

标签: plot label gnuplot contour


【解决方案1】:

如果您检查help contour,它将告诉您轮廓仅适用于splot。但是,您可以将数据绘制成表格并将此等高线表用于plot$Contour 的第一个块(由两个空行分隔)包含数据,下一个块包含由单个空行分隔的轮廓线数据。您可以通过index 1::1 解决后者。

我会尝试这样的事情作为起点,当然还有改进的空间:(使用 gnuplot 5.0.0 和 5.2.8 测试)。显然,您的数据有偏差。

代码:

### plot heatmap with contour lines
reset session

FILE = "Martin7data.dat"

set contour
set cntrparam level discrete 0.5, 1, 1.5, 2, 2.5, 3
set table $Contour
    splot FILE u 1:2:3
unset table

set style textbox opaque
unset key

set view
plot FILE u 1:2:3 w image, \
     $Contour u 1:2 index 1::1 w l lc "red", \
     '' u 1:2:3 index 1::1 every ::0::0 w labels boxed
### end of code

结果:

【讨论】:

  • 非常感谢theozh。确实我的数据有偏差,但我感兴趣的范围是:对于 xrange [0:10] 和 yrange[0.55,0.95]。当我设置这些范围限制时,颜色图会扩展到轴限制之外。如何强制仅在轴限制内绘制图形?
猜你喜欢
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
相关资源
最近更新 更多