You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gnuplot热图Z值与色条范围不匹配且峰值显示异常求助

Gnuplot热图峰值显示异常问题处理

问题描述

使用包含x、y、z列的200×200数据集生成热图,峰值位置正确,但热图中显示的峰值Z值仅为数据实际Z值的约1/10。尝试用set cbrange修改色条范围,只会导致峰值被冲淡,无法解决数值偏差问题。

数据格式(示例片段)

1.665      -0.031       0.355
   1.634      -0.031       0.395
   1.602      -0.031       0.434
   1.571      -0.031       0.471
   1.539      -0.031       0.505
   1.508      -0.031       0.533
   1.477      -0.031       0.555
   1.445      -0.031       0.568
   1.414      -0.031       0.571
   1.382      -0.031       0.563
   1.351      -0.031       0.546

所用Gnuplot代码

set view map
set dgrid3 200,200,1
set xrange [-3.14:3.14]
set yrange [-3.14:3.14]
set termoption enhanced
set xlabel '{/Symbol f}_{i + 1}'
set ylabel '{/Symbol y}_{i}' off -3,0
set size square
set palette defined (0 0 0 0.5, 1 0 0 1, 2 0 0.5 1, 3 0 1 1, 4 0.5 1 0.5, 5 1 1 0, 6 1 0.5 0, 7 1 0 0, 8 0.5 0 0)
splot "plot-pmf-out4.dat" using 1:2:3 with pm3d
set terminal postscript eps enhanced
set output "pmf-plot4.eps"
replot

问题原因及解决方法

核心原因

代码中的set dgrid3 200,200,1是问题根源:该命令会对输入数据进行立方插值平滑处理,通过计算周围数据点的加权平均值生成新网格。你的原始数据已经是200×200的规则网格,插值操作会强行拉低原始数据的峰值,导致显示值仅为实际值的1/10左右。

解决步骤

  1. 删除set dgrid3命令:
    既然原始数据已是规则网格,pm3d可以直接识别并绘制,无需额外插值。修改后的核心代码片段:
    set view map
    # 移除set dgrid3 200,200,1这一行
    set xrange [-3.14:3.14]
    set yrange [-3.14:3.14]
    # 其余配置保持不变
    splot "plot-pmf-out4.dat" using 1:2:3 with pm3d
    
  2. 验证数据格式:
    如果删除插值命令后热图显示异常,需确认数据是否按pm3d要求排列:同一x值对应的所有y-z数据连续排列,不同x值组之间用空行分隔。若数据格式不符,需先整理数据结构。
  3. 若必须插值的替代方案:
    若原始数据为非规则网格,确实需要插值,可将set dgrid3的第三个参数改为0(线性插值),减少峰值被稀释的程度:
    set dgrid3 200,200,0
    

内容的提问来源于stack exchange,提问作者Erik Nelson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:59:54