Animation gnuplot动画二维向量场

Animation gnuplot动画二维向量场,animation,vector,gnuplot,gif,animated-gif,Animation,Vector,Gnuplot,Gif,Animated Gif,我正在尝试用gnuplot设置2D向量的动画。我想显示一条直线,即一次显示一个向量 我的数据结构如下:它们是x,y,u,v 2.24448 0.270645 1.00 1.00 3.24448 0.270645 0.500 1.20 我可以使用以下命令创建静态绘图: plot "datam.dat" using 1:2:3:4 with vectors filled head lw 3 以下是输出: 这里是我的问题:我想动画和显示一行,即一次一个向量,如何在GNU绘图

我正在尝试用gnuplot设置2D向量的动画。我想显示一条直线,即一次显示一个向量

我的数据结构如下:它们是x,y,u,v

2.24448 0.270645    1.00    1.00
3.24448 0.270645    0.500   1.20
我可以使用以下命令创建静态绘图:

plot "datam.dat" using 1:2:3:4 with vectors filled head lw 3
以下是输出:

这里是我的问题:我想动画和显示一行,即一次一个向量,如何在GNU绘图中使用GIF实现这一点


谢谢

动画gif是用set terminal gif animate创建的。有关详细信息,请查看帮助gif。 下面是一个使用gnuplot 5.2测试的简单示例。您必须为每一帧绘制一个新的绘图。因此,将plot命令放入do for循环中。使用every::i::i时,您仅绘制第i行检查帮助every。如果您不知道数据文件的总行数,请执行stats YourFile.dat,变量stats_记录将告诉您这个数字

代码:

结果:

补充:

这将是非动画版本,例如在wxt终端中

代码:

结果:

补充2:

你是说像这样的事吗?半动画箭头?顺便说一句,正如您所看到的,箭头在gif和wxt终端中看起来非常不同

代码:

结果:


动画gif是使用“设置终端gif动画”创建的。有关详细信息,请查看帮助gif。 下面是一个使用gnuplot 5.2测试的简单示例。您必须为每一帧绘制一个新的绘图。因此,将plot命令放入do for循环中。使用every::i::i时,您仅绘制第i行检查帮助every。如果您不知道数据文件的总行数,请执行stats YourFile.dat,变量stats_记录将告诉您这个数字

代码:

结果:

补充:

这将是非动画版本,例如在wxt终端中

代码:

结果:

补充2:

你是说像这样的事吗?半动画箭头?顺便说一句,正如您所看到的,箭头在gif和wxt终端中看起来非常不同

代码:

结果:


非常感谢@theozh。我有一个问题,如果我想让向量出现并保持不变呢?那么,应该设置什么动画呢?非常感谢@theozh。我有一个问题,如果我想让向量出现并保持不变呢?那么,应该设置什么动画呢?
### animated graph with vectors
reset session

set term gif size 300,300 animate delay 12 loop 0 optimize
set output "AnimateVectors.gif"

# create some dummy data
set angle degrees
N = 60
set samples N
set table $Data
    plot [0:360] '+' u (cos($1)):(sin($1)):(sin($1)):(cos($1)) w table
unset table

set xrange[-2.5:2.5]
set yrange[-2.5:2.5]
do for [i=0:N-1] {
    plot $Data u 1:2:3:4 every ::i::i w vectors lw 2 lc rgb "red" notitle
}
set output
### end of code
### non-animated graph with vectors
reset session
set term wxt size 400,400

# create some dummy data
set angle degrees
N = 60
set samples N
set table $Data
    plot [0:360] '+' u (cos($1)):(sin($1)):(sin($1)):(cos($1)) w table
unset table

set xrange[-2.5:2.5]
set yrange[-2.5:2.5]
plot $Data u 1:2:3:4 w vectors lw 1.5 lc rgb "red" notitle
### end of code
### "semi"-animated graph with vectors
reset session
set term gif size 300,300 animate delay 12 loop 0 optimize
set output "AnimateVectorsSemi.gif"

# create some dummy data
set angle degrees
N = 60
set samples N
set table $Data
    plot [0:360] '+' u (cos($1)):(sin($1)):(sin($1)):(cos($1)) w table
unset table

set xrange[-2.5:2.5]
set yrange[-2.5:2.5]

do for [i=0:N-1] {
    plot $Data u 1:2:3:4 every ::0::i w vectors lw 1.5 lc rgb "red" notitle
}
set output
### end of code