如何为GNUplot中两个点之间的线设置动画?

时间:2018-08-22 13:14:02

标签: gnuplot

我正在解决摆的运动方程,我需要在GNUplot中创建一个动画来显示系统的演变。 R4K逐点为我提供了解决方案,该解决方案存储在第2列和第3列中名为“ d”的.dat文件中。这些是给GNUplot的命令:

    set xrange [-2:2]
    set yrange [-2:2]
    set pointsize 2
    set style line 2 lc rgb '#0060ad' pt 7
    set object circle at first 0,0 size scr 0.01 \
        fillcolor rgb 'black’ fillstyle solid
    do for [ii=1:3762] {
    plot 'd.dat' using 2:3 every ::ii::ii linestyle 2
    pause 0.002
    }

我现在想用移动线将[0,0]中的圆连接到d.dat绘制的移动点;我该怎么做?我找到了一种here的解决方案,但我仍然不知道如何告诉GNUplot在“ d.dat”中搜索某个点,每次都不同,并在它与中心。

1 个答案:

答案 0 :(得分:0)

到目前为止,user8153的解决方案是最好的。让我试用一下。如果我是你,我会使用箭头来动态地移动它们的位置,因为every命令一次加载一个点。 GNUPLOT提供了有用的环境变量,例如GPVAL_X_MIN, GPVAL_X_MAX, GPVAL_Y_MIN,...

set xrange [-2:2]
set yrange [-2:2]
set pointsize 2
set style line 2 lc rgb '#0060ad' pt 7
set object circle at first 0,0 size scr 0.01 \
    fillcolor rgb 'black’ fillstyle solid
do for [ii=1:3762] {
plot 'd.dat' using 2:3 every ::ii::ii linestyle 2
# makes GPVAL_ variables available 
xpos = GPVAL_X_MIN; ypos = GPVAL_Y_MIN # or MAX does not matter since you are
                                       # loading one point at time.
unset arrow # Remove the one of the previous graph
set arrow from 0, 0 to xpos, ypos nohead lc rgb 'black' 
replot
pause 0.002
}

我没有调试该代码段的数据,但是我会做一些类似的事情。更高版本的GNUPLOT允许使用避免stats的{​​{1}}命令(replot可能会影响胶片图像的持久性,但我不确定)。您也可以尝试一些方法

replot

我从未在每个命令中使用set xrange [-2:2] set yrange [-2:2] set pointsize 2 set style line 2 lc rgb '#0060ad' pt 7 set object circle at first 0,0 size scr 0.01 \ fillcolor rgb 'black’ fillstyle solid do for [ii=1:3762] { stats 'd.dat' using 2:3 every ::ii::ii # applied the statistical summary of # the data file xp = STATS_min_x; yp = STATS_min_y unset arrow set arrow from 0, 0 to xp, yp nohead lc rgb 'black' plot 'd.dat' using 2:3 every ::ii::ii linestyle 2 pause 0.002 } (让我知道输出只是为了好玩)。

希望有帮助