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

Gnuplot无法生成正确动态热力图(GIF格式)问题咨询

问题:Gnuplot生成(x,y,t,e)格式数据的动态热力图失败

我的数据格式为(x, y, t, e),尝试用Gnuplot生成GIF动态热力图但遇到两个问题:

  • 生成的GIF中热力图为空
  • 右侧图例(颜色条)范围逐帧变化,无法固定为全局的最小/最大值

以下是我使用的代码:

set view map scale 1
set size square
set xlabel("x (m)")
set ylabel("y (m)")
set zlabel("V/m")
set title "E_z evolution"
set cblabel "E (V/m)"

set xrange [0:200]
set yrange [0:200]
set zrange [0:200]

set pm3d implicit at s 
set pm3d corners2color max 

set term gif animate delay 100 

set output "electric_field_evo.gif"
DATA = "result.dat"
stats DATA using 4

do for [i=1:int(STATS_blocks)]{
    splot DATA index (i-1) every 1::1::1 using (t=$3):(NaN):(NaN) notitle, \
          DATA index (i-1) using 1:2:4 with pm3d title sprintf("time = %g",t)
}

# do for [i=1:int(STATS_blocks)]{
#     splot DATA index (i-1) using 1:2:(t=$3,$4) with pm3d title sprintf("time = %g",t)
# 
# }

解决方案

1. 修复空热力图问题

原代码中splot命令的第一部分(DATA index (i-1) every 1::1::1 using (t=$3):(NaN):(NaN) notitle)属于冗余代码,会干扰pm3d图层的正常渲染,直接移除即可。同时需确保每个数据块(对应一个时间步)的x、y坐标是规则的网格结构——pm3d依赖完整网格才能正确绘制热力图。

2. 固定颜色条范围

通过stats命令先获取全局所有e值(第4列)的最小和最大值,再用cbrange参数锁定颜色条范围,避免gnuplot逐帧自动调整颜色区间。

修改后的完整代码

set view map scale 1
set size square
set xlabel "x (m)"
set ylabel "y (m)"
set zlabel "V/m"
set title "E_z evolution"
set cblabel "E (V/m)"

set xrange [0:200]
set yrange [0:200]
set zrange [0:200]

set pm3d implicit at s 
set pm3d corners2color max 

# 获取全局e值的最小/最大值,不输出冗余统计信息
DATA = "result.dat"
stats DATA using 4 nooutput
# 固定颜色条范围为全局最值
set cbrange [STATS_min:STATS_max]

set term gif animate delay 100 
set output "electric_field_evo.gif"

do for [i=1:int(STATS_blocks)]{
    # 获取当前数据块的时间t(取该块第一行的t值)
    t_val = NaN
    stats DATA index (i-1) using (t_val=$3) nooutput
    # 绘制当前时间步的热力图
    splot DATA index (i-1) using 1:2:4 with pm3d title sprintf("time = %g", t_val)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:31:04