我在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制作成电影。像这个,Make movie with data files using gnuplot,但我没有足够的资源。
或者,我试图遵循这个:Gnuplot - plotting position(xyz) vs time data inside a specified space (eg a box) with a pause然后将其转换为MPEG,但我无法让他们的代码工作。我得到了所有帧中的完整情节,只有n =#部分是动画。
但我能够得到一个“情节f(x,t)”动画。
(编辑:我没有动画点的代码。真的)
答案 0 :(得分:2)
要一次动画一个点,您可以按照以下方式进行:
# 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
转换为电影。
注意,对于plot
,您必须使用every ::::i
(仅限:
}来限制绘制点的数量。您关联的问题Gnuplot - plotting position(xyz) vs time data inside a specified space (eg a box) with a pause必须使用五个:
来迭代数据块,就像用于带splot
的3D图一样。