Анимированные GIF создаются с set terminal gif animate
. Проверьте help gif
для деталей.
Ниже приведен простой пример (протестирован с gnuplot 5.2). Вы должны сделать новый сюжет для каждого кадра. Итак, поместите вашу команду заговора в do for
-петл. С every ::i::i
вы строите только i
-ю линию (отметьте help every
). Если вы не знаете общее количество строк вашего файла данных, введите stats "YourFile.dat"
, и переменная STATS_records
сообщит вам это число.
Код:
### 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
Результат:
![enter image description here](https://i.stack.imgur.com/RG90a.gif)
Дополнение:
Это будет неанимированная версия, например в wxt
-терминале.
Код:
### 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
Результат:
![enter image description here](https://i.stack.imgur.com/DF4N2.png)
Addition2:
Может быть, вы имеете в виду что-то подобное? «Полу» анимированная стрела? Кстати, как вы можете видеть, стрелки выглядят совсем по-разному в терминалах gif
и wxt
.
Код:
### "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
Результат:
![enter image description here](https://i.stack.imgur.com/CfNZc.gif)