Animation 如何在gnuplot中沿轨迹创建动画标记点?
在对现有GNU绘图进行了相当多的调整后,我成功地获得了以下内容:Animation 如何在gnuplot中沿轨迹创建动画标记点?,animation,gnuplot,Animation,Gnuplot,在对现有GNU绘图进行了相当多的调整后,我成功地获得了以下内容: reset # png set terminal png size 350,262 enhanced font 'Verdana,10' # color definitions set style line 1 lc rgb '#0060ad' lt 1 lw 2 pt 7 ps 2 # --- blue unset key set border 0 unset tics # set view 342,0 set xrang
reset
# png
set terminal png size 350,262 enhanced font 'Verdana,10'
# color definitions
set style line 1 lc rgb '#0060ad' lt 1 lw 2 pt 7 ps 2 # --- blue
unset key
set border 0
unset tics
# set view 342,0
set xrange [-300:300]
set yrange [-300:300]
n=0
do for [ii=1:99] {
n=n+1
set output sprintf('png/spiral%03.0f.png',n)
plot '1_1910.txt' every ::1::ii w l ls 1, \
'2_1910.txt' every ::1::ii w l ls 1
}
do for [ii=1:99] {
n=n+1
set output sprintf('png/spiral1%03.0f.png',n)
plot '1_1920.txt' every ::1::ii w l ls 1, \
'2_1920.txt' every ::1::ii w l ls 1
}
其思想是创建一组PNG文件,然后用动画将它们连接起来
我使用
convert -delay 2 -loop 0 png/*.png animation.gif
我想做更多的调整:
但我不明白为什么他的代码有一条消失的“线索”,为什么他也有一个要点,而我没有。正如我所说,我还希望文本与项目符号一起移动(每个数据文件的文本相同)。我认为您可以使用如下循环:
n = 0
do for [ii=0:60] {
n=n+1
set output sprintf('png/spiral%03.0f.png',n)
plot 'data.dat' every ::ii::ii w p ls 1, \
'data.dat' using 1:2:("foo") every ::ii::ii w labels offset 2
}
set label 1 "hyde" at 275,-275
do for [ii=60:0:-1] {
n=n+1
set output sprintf('png/spiral%03.0f.png',n)
plot 'data.dat' every ::ii::ii w p ls 1, \
'data.dat' using 1:2:("foo") every ::ii::ii w labels offset 2
}
结果如下:
您可以使用offset
坐标将标签文本“foo”
定位到您想要的位置
若要更改点的大小,请在脚本开头的“线样式”命令中更改ps
的值
我不确定这两个不同文件(1_1910.txt和2_1920.txt)的用途,因此我在示例中使用了相同的文件。如果同时打印两个不同的对象,则可能需要添加到“打印”命令
至于您的其他问题,我认为仔细查看中的代码可以让您了解正在发生的事情。在示例中,范围every::1::ii
绘制从1
到ii
的点,给出一条线;范围every::ii::ii
仅绘制一个点。请注意,示例中的缩写词w l
和w p
分别扩展为带行的,和带点的
在本例中,由于第二个循环的操作,该行消失,该循环反向运行(对于[ii=99:1:-1]
)。如果要复制该示例,请确保索引的值正确(可能有99个数据点以外的数字)。还要注意,gnuplot中的索引从0开始,因此如果数据文件的第一行包含数据(而不是头),那么您希望从ii=0
开始循环,而不是从ii=1
开始循环,我在这里遇到了几乎相同的问题。我发现了一个非常好的黑客!您只需在一个循环中使用set multiplot
然后unset multiplot
,而不是创建多个png然后合并它们。具体来说,我是这样使用的:
do for [i=0:k]
{
set multiplot
plot function1
plot function2
unset multiplot
}
但不幸的是,除非您拥有的数据集已同步,否则这将无法工作!,但仍然可以使用if语句解决此问题!。祝你好运我确实需要并行绘制两个文件,但由于某种原因,当我添加另一个文件时(每个绘图都有两个额外的精确语句,只是文件名不同),我会出错。原始代码不会出现这种情况-我可以添加任意多的文件。知道为什么吗?如果没有看到一些代码,或者至少是错误消息/错误描述,我就不能确定。您的代码可能有错误的继续语法--,在打印行的末尾是`s,在下一行的开头是filename(no
plot`关键字)。