Gnuplot在xy图形上绘制3D数据,并带有等高线
我试着用轮廓在xy平面图上绘制3D数据。我设法得到了彩色地图,但我有几个问题。 我的数据分为3列(见下面的代码),每行之间有空格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
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
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]。当我设置这些范围限制时,颜色贴图会延伸到轴限制之外。如何强制仅在轴限制内绘制图形?