如何使用矩阵非均匀数据文件格式制作2D gnuplot动画?

时间:2018-10-27 11:03:59

标签: animation gnuplot

我想知道如何使用gnuplot矩阵非均匀格式制作Gnuplot 2d动画,第一列是时间,第一行是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)

如何在gnuplot中为每次迭代f(t,x)制作2D动画?

谢谢

1 个答案:

答案 0 :(得分:0)

如果您的数据采用以下方式,则可能会更容易:

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