GNUPlot-将2D数据点绘制为MPEG
我在x-y列中有很多点,我使用了一些fortran代码。部分看起来像这样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
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…”不起作用),但我成功了。