GNUPlot-将2D数据点绘制为MPEG

GNUPlot-将2D数据点绘制为MPEG,gnuplot,Gnuplot,我在x-y列中有很多点,我使用了一些fortran代码。部分看起来像这样 1.000 0.000 0.996 0.063 0.988 0.125 0.976 0.187 0.961 0.249 0.941 0.309 0.917 0.368 0.890 0.426 0.859 0.4

我在x-y列中有很多点,我使用了一些fortran代码。部分看起来像这样

   1.000          0.000
   0.996          0.063
   0.988          0.125
   0.976          0.187
   0.961          0.249
   0.941          0.309
   0.917          0.368
   0.890          0.426
   0.859          0.481
   0.825          0.535
   0.787          0.587
   0.746          0.636
   0.702          0.682
到目前为止,我可以在一个图像中绘制所有的内容

但我需要做的是把这些点一次一个地画成电影。我不想做GIF,因为我需要时间滑块。当它移动时,我需要让线连接点

然而,我发现所有涉及MPEG的教程都是一次绘制一个DAT文件,并将JPEG制作成电影。就像这个,但我没有足够的资源

或者,我试着这样做:然后将其转换为MPEG,但我无法让他们的代码正常工作。我在所有帧中都得到了完整的绘图,只有n=#部分正在制作动画

不过,我还是能够将“f(x,t)图”制作成动画


(编辑:我没有设置点动画的代码。真的)

要一次设置一个点的动画,可以按如下方式执行:

# calculate the number of points
stats 'file.txt' using 1:2 nooutput

# if you want to have a fixed range for all plots
set xrange [STATS_min_x:STATS_max_x]
set yrange [STATS_min_y:STATS_max_y]

set terminal pngcairo size 800,400
outtmpl = 'output%07d.png'

do for [i=0:STATS_records-1] {
    set output sprintf(outtmpl, i)
    plot 'file.txt' every ::::i with lines title sprintf('n = %d', i)
}
set output
最后使用类似于

ffmpeg -i pic%07d.png movie.mpeg
转换成电影


请注意,使用
绘图
时,必须使用
每个:::i
(仅四个
)来限制绘图点的数量。您链接的问题必须使用五个
来迭代数据块,例如用于三维绘图的
splot

冒号到底用于什么?另外,是否可以跳过关于计算点的第一行?反正我的程序可以打印出来。@Vardonir冒号用作数据选择器<代码>帮助每一个都会为您提供详细信息。您可以使用
每隔一行跳过第一行(或任何其他行)。例如,
every:::0::1
选择前两个数据块,而
every::0::1
选择前两行
every::1
跳过第一行并打印其他所有内容。非常强大,但开始时有点混乱。当然,你可以跳过点数的计算。然后您必须从其他地方获得迭代次数。此外,您还必须决定是否应为所有绘图固定x和y范围,或者是否希望它们从一个绘图调整到下一个绘图。我建议你使用一个固定的范围,在这种情况下你无论如何都需要使用
stats
。这很有效!非常感谢。FFMpeg的启动和运行异常困难(通常的“sudo-apt-get-install…”不起作用),但我成功了。