Gnuplot在xy图形上绘制3D数据,并带有等高线

Gnuplot在xy图形上绘制3D数据,并带有等高线,plot,label,gnuplot,contour,Plot,Label,Gnuplot,Contour,我试着用轮廓在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.0000000

我试着用轮廓在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
我得到了下面的图表:

我的问题如下:

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

    #轮廓1,标签:2.5
    7.29125 0.900642 2.5
    7.269530.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

  • 我的轴和颜色贴图之间有一个空白。我不明白为什么,因为我的数据比绘图范围宽

  • 提前感谢您的回答


    Martin

    如果您选中
    帮助轮廓
    ,它将告诉您轮廓仅适用于
    splot
    。但是,您可以将数据散放到表格中,并将此等高线表格用于
    绘图。
    $Contour
    的第一个块(由两条空线分隔)包含数据,下一个块包含由单个空线分隔的等高线数据。您可以通过
    索引1::1
    解决后者

    我会尝试这样做作为起点,当然还有改进的余地:(使用gnuplot5.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
    
    结果:

    ### 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
    

    如果您选中
    帮助轮廓
    ,它将告诉您轮廓仅适用于
    splot
    。但是,您可以将数据散放到表格中,并将此等高线表格用于
    绘图。
    $Contour
    的第一个块(由两条空线分隔)包含数据,下一个块包含由单个空线分隔的等高线数据。您可以通过
    索引1::1
    解决后者

    我会尝试这样做作为起点,当然还有改进的余地:(使用gnuplot5.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
    
    结果:

    ### 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
    

    请将数据以文本形式发布,而不是以图像形式发布。您是否检查了此项?最小/最大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。请以文本而不是图像的形式发布数据。您检查过这个吗?最小/最大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。非常感谢theozh。事实上,我的数据是倾斜的,但我感兴趣的范围是:对于xrange[0:10]和yrange[0.55,0.95]。当我设置这些范围限制时,颜色贴图会延伸到轴限制之外。我怎样才能强制在轴限制内绘制图形?非常感谢。事实上,我的数据是倾斜的,但我感兴趣的范围是:对于xrange[0:10]和yrange[0.55,0.95]。当我设置这些范围限制时,颜色贴图会延伸到轴限制之外。如何强制仅在轴限制内绘制图形?