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

Gnuplot动画曲面图:将数据文件值导入Set Label的问题

解决Gnuplot动画曲面图实时显示统计值的方法

核心问题说明

你之前尝试在splot的using语句里赋值变量,但Gnuplot中该语句内的变量仅在当前绘图上下文有效,无法向外传递。要实现实时显示统计值,得先单独提取每一帧的统计数据,再将其绑定到绘图标签。

具体实现方案

方案1:数据已提前包含总和/平均值(对应你的output3.dat第4、5列)

用stats命令先读取当前帧的统计列值,再绘制曲面并添加标签:

# 假设总帧数为N,根据你的实际数据调整
set terminal gif animate delay 100  # 设置GIF动画终端,延迟100ms
set output 'surface_anim.gif'

do for [i=0:N-1] {
    # 读取当前帧的总和(第4列)
    stats 'output3.dat' index i:i using 4 nooutput
    sum_val = STATS_max  # 因每个数据块仅一行统计值,取max等价于取该值
    # 读取当前帧的平均值(第5列)
    stats 'output3.dat' index i:i using 5 nooutput
    avg_val = STATS_max

    # 绘制曲面图
    splot 'output3.dat' index i:i using 1:2:3 with pm3d
    # 添加固定位置的实时标签
    set label 1 sprintf("总和: %.2f | 平均值: %.2f", sum_val, avg_val) at screen 0.1, screen 0.9 font "Arial,12"
    replot  # 刷新标签到当前帧
}
set output

方案2:Gnuplot实时计算Z值的总和/平均值

如果数据未提前统计,直接用stats命令计算当前帧Z值的统计量:

set terminal gif animate delay 100
set output 'surface_anim.gif'

do for [i=0:N-1] {
    # 统计当前帧Z值(第3列)的总和与平均值
    stats 'output3.dat' index i:i using 3 nooutput
    sum_z = STATS_sum
    avg_z = STATS_mean

    # 绘制曲面并更新标签
    splot 'output3.dat' index i:i using 1:2:3 with pm3d
    set label 1 sprintf("Z值总和: %.2f | Z值平均值: %.2f", sum_z, avg_z) at screen 0.1, screen 0.9
    replot
}
set output

关键注意事项

  • stats命令的nooutput参数用于避免终端输出冗余统计信息,仅将结果存入STATS_*内置变量
  • at screen x,y用画布相对坐标定位标签,确保标签位置不随曲面缩放变化
  • 动画循环中必须用replot刷新标签,否则新标签无法同步到当前帧

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:00:50