我正在解决摆的运动方程,我需要在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”中搜索某个点,每次都不同,并在它与中心。
答案 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
}
(让我知道输出只是为了好玩)。
希望有帮助