Как сделать 2D анимацию gnuplot, используя матричный неоднородный формат файла данных? - PullRequest
0 голосов
/ 27 октября 2018

Я хочу знать, как сделать анимацию Gnuplot 2d с использованием неравномерного формата матрицы gnuplot, причем первый столбец - это время, первая строка - это отметки оси x, а первый номер первой строки - это число столбцы после первой, пример такой матрицы дан, представьте, что у нас есть 2 итерации времени и 2 точки пространства. Если индекс идет от 0 до 1, то такая матрица будет выглядеть так:

2     x[0] x[1]

t[0] f(0,0) f(0,1)

t[1] f(1,0) f(1,1)

Как сделать 2-мерную анимацию в gnuplot для f(t,x) для каждой временной итерации?

Спасибо

1 Ответ

0 голосов
/ 05 ноября 2018

возможно, было бы проще, если бы ваши данные выглядели следующим образом:

2x2    t[0]     t[1]
x[0]   f(0,0)   f(0,1)
x[1]   f(1,0)   f(1,1)

Если ваши данные уже существуют со столбцами x[..] и строками t[..], возможно, есть способ сделать это,но, вероятно, немного сложнее.В следующем примере будут созданы фиктивные данные (они также будут записаны в файл), и они будут отображаться в анимированном GIF-файле.В gnuplot также проверьте help gif для получения дополнительной информации.Измените код в соответствии с вашими потребностями.

### create some animated graph
reset session

set term gif size 300,300 animate delay 10 loop 0 optimize
set output "Animate.gif"

# create some dummy data
m = 50
n = 50
set print $Data 
temp = sprintf("%gx%g\t",m,n)
do for [j=1:n] {
    temp = temp.sprintf("t[%g]",j)
    if (j<n) {temp = temp."\t"}
}
print temp
do for [i=1:m] {
    temp = ""
    do for [j=1:n] {
        temp = temp.sprintf("%g", sin(2*pi*j/real(n)+2*pi*i/real(m)))
        if (j<n) {temp = temp."\t"}
    }
    temp = sprintf("x[%g]\t",i).temp
    print temp
}
set print "Animate.dat"
print $Data 
set print
# dummy data finished

FILE = "Animate.dat"
stats FILE u 0 nooutput
set yrange[-1:1]
set xtics 10
set grid xtics, ytics
do for [i=2:STATS_columns] {
   plot FILE u 0:i w lp lt 7 lc rgb "red" title columnhead(i)
}
set output
### end code

enter image description here

...