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

Gnuplot如何逐块读取dat文件数据绘图生成gif动图

Gnuplot 按空白行分隔数据集生成GIF实现方案

核心实现逻辑

gnuplot 原生支持按空白行分隔的多数据集读取,使用index参数即可指定要读取的数据集序号(从0开始计数,第一个数据集对应index 0,第二个对应index 1,以此类推),刚好适配你的数据格式。

直接补全现有代码

你只需要在循环内写入以下splot语句即可:

splot "data.dat" index a-1 using 1:2:3:4:5 with circles lc var notitle

因为你的循环变量a从1开始,所以用a-1匹配从0开始的index编号即可。

优化版:自动适配未知数量的数据集

如果你的数据集总数不固定,不需要手动修改循环上限,可以先用stats命令自动统计数据集总数,完整代码如下:

reset session

set term gif size 700,700 animate delay 30 optimize
set output "data.gif"

set xrange [-1000:1000]
set yrange [-1000:1000]
set zrange [-3000:-2500]

# 自动统计数据集总数,无需手动指定循环次数
stats "data.dat" nooutput
n_datasets = STATS_blocks

do for [a=1:n_datasets:1] {
    splot "data.dat" index a-1 using 1:2:3:4:5 with circles lc var notitle
}
set output

补充说明

  • stats命令返回的STATS_blocks变量就是文件中按空白行分隔的数据集总数,自动适配任意数量的时间步
  • 如果你的数据集之间是用两个空白行分隔的,只需要额外加参数set datafile separator "\n\n"即可适配

内容的提问来源于stack exchange,提问作者J.A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:18:03