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
相关产品推荐
相关产品推荐

