Gnuplot绘制2D热力图遇问题:等高线异常+X轴无标签求助
Gnuplot热力图与等高线问题解决
问题概述
使用Gnuplot生成2D热力图并添加930值等高线时,遇到两个问题:
- 930等高线呈水平直线,而非预期的平滑曲线
- X轴未显示标签
问题1:X轴标签不显示
原因
你设置的set xtics 10,15,100与X轴范围[0.0:0.35]完全不匹配,所有刻度都超出可视范围,导致X轴无刻度,标签无法正常显示。
修正
将X轴刻度改为匹配数据范围的设置:
set xtics 0,0.05,0.35
该命令设置刻度从0开始,步长0.05(与你的数据X值一致),到0.35结束。
问题2:等高线呈水平直线
原因
set dgrid3d未指定分辨率,默认插值网格过于粗糙,无法生成平滑曲线- 未启用等高线的平滑插值,只能沿原始数据行/列生成直线
修正步骤
在生成等高线数据文件时,调整以下参数:
- 指定
dgrid3d的高分辨率网格,比如set dgrid3d 50,50(数值越大,插值越精细) - 启用B样条平滑:
set cntrparam bspline - 设置正确的contour模式:
set contour surface
修改后的等高线生成代码:
unset surface set dgrid3d 50,50 set contour surface set cntrparam levels discrete 930 set cntrparam bspline set table "e-nb-hierro.out" splot "mapa-estabilidad.dat" unset table
完整修正脚本
# 生成平滑等高线数据 unset surface set dgrid3d 50,50 set contour surface set cntrparam levels discrete 930 set cntrparam bspline set table "e-nb-hierro.out" splot "mapa-estabilidad.dat" unset table # 绘制热力图与等高线 set term pngcairo enhanced dashed color size 35cm,30cm font 'Arial, 28' set output "Estabilidad.png" set pm3d map interpolate 0,0 set palette model RGB defined (1.4 'black',1.7 'blue',2.0 'red',2.1 'yellow') set xlabel "{/Symbol a} [MeV]" set ylabel "{/:Italic Bag} [MeV/fm^3]" set cblabel "{/:Italic {{/Symbol e}/n_B }}[MeV]" set size square set xrange [0.0:0.35] set yrange [40:120] set mxtics 2 set mytics 2 set xtics 0,0.05,0.35 splot "mapa-estabilidad.dat" u 1:2:3 w pm3d notitle, \ "e-nb-hierro.out" u 1:2:3 w l lt 8 lw 3 lc 'white' notitle
效果验证
- X轴将正常显示匹配数据的刻度与标签
- 930等高线会呈现符合数据趋势的平滑曲线(从数据来看,该等高线从左上区域向右下区域延伸)
内容的提问来源于stack exchange,提问作者martín canullán
相关产品推荐
相关产品推荐

