如何使用 gnuplot 从单个数据文件为多个点(行星)制作动画。

How to animate multiple points (planets) using gnuplot, from a single data file.

我正在尝试制作木星、太阳和小行星在稳定的拉格朗日点 L5 围绕其质心运行时的动画。我想用 gnuplot 做这个动画。

我写了一个程序,可以找到它们在时间 t/AU 的位置。我得到的数据在下面,有列、时间、x 位置、y 位置,还有行、行星、太阳、小行星。我已经查看了在 gnuplot 中制作动画的其他解决方案,但它们似乎对我不起作用。请帮助我理解我需要在 gnuplot 命令行中输入什么来获取此数据的动画。

谢谢。

0   0   5.19481
0   0   -0.00519481
0   4.50634 2.6


0.01    0.0275397   5.19473
0.01    -2.75397e-05    -0.00519473
0.01    4.52006 2.57607


0.02    0.0550786   5.19451
0.02    -5.50786e-05    -0.00519451
0.02    4.53365 2.55208


0.03    0.082616    5.19415
0.03    -8.2616e-05 -0.00519415
0.03    4.54712 2.52801


0.04    0.110151    5.19364
0.04    -0.000110151    -0.00519364
0.04    4.56046 2.50386


0.05    0.137683    5.19298
0.05    -0.000137683    -0.00519298
0.05    4.57367 2.47965


0.06    0.165211    5.19218
0.06    -0.000165211    -0.00519218
0.06    4.58675 2.45537
etc...

这只是草稿:

stats 'test.txt' u 2:3
set xr [STATS_min_x:STATS_max_x]
set yr [STATS_min_y:STATS_max_y]
do for [i=0:STATS_blocks-1] { 
    plot 'test.txt' index i u 2:3 w p pt 7 title sprintf("time: %f",i*0.01)
    pause 1
}

您可以直接制作gif动画:

stats 'test.txt' u 2:3
set xr [STATS_min_x:STATS_max_x]
set yr [STATS_min_y:STATS_max_y]
set term gif animate
set output 'test.gif'
do for [i=0:STATS_blocks-1] { 
    plot 'test.txt' index i u 2:3 w p pt 7 title sprintf("time: %f",i*0.01)
}

现在这是非常基本的,但可以调整以制作真正高质量的图像。