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

使用pm3d与dgrid3d绘制Gnuplot热图出现空白区域,如何解决?

解决gnuplot随机点热图边缘空白问题

你遇到的问题根源在于:当使用dgrid3d处理随机点数据时,gnuplot默认会给轴范围自动添加一些余量,导致热图和绘图区域边缘出现空白;而直接绘制函数时,isosample是在设定的轴范围内均匀生成点,自然会填满整个区域。下面是具体的解决方法,完全不需要手动猜测数据范围:

步骤1:自动获取数据的x、y极值

用stats命令可以快速统计数据文件中x和y列的最小、最大值,而且不会输出冗余信息:

stats "data.txt" using 1:2 nooutput

执行后,gnuplot会自动生成几个变量:STATS_min_x、STATS_max_x、STATS_min_y、STATS_max_y,分别对应x列的最小值、最大值,y列的最小值、最大值。

步骤2:设置轴范围严格贴合数据极值

通过noextend选项关闭gnuplot默认的轴范围扩展,让轴的上下限完全等于数据的极值:

set xrange [STATS_min_x:STATS_max_x] noextend
set yrange [STATS_min_y:STATS_max_y] noextend

步骤3:保留你的原有绘图配置并绘图

把你之前的热图设置和绘图命令加进来,完整的命令序列如下:

# 统计数据极值
stats "data.txt" using 1:2 nooutput

# 锁定轴范围
set xrange [STATS_min_x:STATS_max_x] noextend
set yrange [STATS_min_y:STATS_max_y] noextend

# 热图基础设置
set view map
set dgrid3d 50,50,2
set pm3d at b
unset key
unset surface

# 绘制热图
splot "data.txt" using 1:2:3

这样处理后,dgrid3d生成的插值网格就会完全填满整个绘图区域,和你直接绘制函数时的效果一致。如果之后觉得边缘过于紧凑,也可以手动给范围加一点缓冲,比如set xrange [STATS_min_x-0.05:STATS_max_x+0.05] noextend,根据你的数据精度调整即可。

内容的提问来源于stack exchange,提问作者Dirk K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:17:31