如何使用单个数据文件中的gnuplot为多个点(行星)设置动画。

时间:2016-03-22 18:18:39

标签: animation gnuplot physics

我试图在稳定的拉格朗日点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...

1 个答案:

答案 0 :(得分:1)

这只是草稿:

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)
}

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