Gnuplot动画矢量

时间:2016-04-14 14:51:20

标签: gnuplot

我正在尝试在gnuplot中制作流体矢量动画。要创建矢量值,我使用FORTRAN。我的FORTRAN子程序程序在名为vekdata.txt的txt文件中打印矢量数据,并使用gnuplot命令创建另一个名为plotvek.txt的文件。这个子程序在do循环中,所以每次迭代都会更新vekdata.txt。

所以我在徘徊如何制作动画,因为它及时发展?有一些简单的命令吗?因为它现在它在我的屏幕上打印了大量的图片。每张图片都有点不同,所以我知道代码有效。

do t=1,1000

call vektorplot(storu,storv,n,Re,t)

end do





open(21,access='sequential',file='plotvek.txt',status='unknown')

write(21,*)'set term png enhanced'
write(21,*)'# plotvek.txt'
write(21,*)'set output sprintf(''frame_%09d.png'',',t,')'




!animation commands
write(21,*)'set output sprintf("frame_%9d",'t,')'


close(21,status='keep')


call execute_command_line("gnuplot -persist plotvek.txt")

2 个答案:

答案 0 :(得分:2)

gif终端有一个制作gif动画的选项,但你必须在一次调用gnuplot脚本时将其全部绘制。

您可以尝试这样的事情:

$ makevectors | gnuplot 

其中makevectors是你的fortran代码,只有它将所有内容打印到STDOUT,首先是

set term gif animation
set out 'vectors.gif'
do for [i=1:100] {plot '-' using 1:2:($3*30):($4*25) with vectors}

(加上其他设置),然后是100个数据集,每个数据集后都有一个EOF。最后打印

set out

(好吧,无论如何输出会关闭,但只是非常有序)并且你有一个带有那个gif动画的文件。

更新:我建议您将gnuplot命令移动到脚本文件,并在命令行makevectors | gnuplot script.gp上调用gnuplot。这样,如果要更改线条颜色或其他内容,则不必总是重新编译程序。

答案 1 :(得分:1)

我在这里张贴另一种选择。

虽然我通常更喜欢动画gif为Karl answers,但有时候GIF很难租用,特别是对于很长的电影,它们往往会创建无响应的应用程序(浏览器或幻灯片演示文稿)。

基本上你每个写一个文件,然后创建一个电影。

this link中你有gif和电影的例子。我将在这里回顾一下这些原则。

对于每个,您可以设置png终端和输出文件。作为fortran命令,这将是:

write(21,*)'set term png enhanced'
write(21,*)'# plotvek.txt'
write(21,*)'set output sprintf("frame_%09d.png",',n+1,')'
[...]

然后,一旦程序运行,您就可以创建一个电影:

mencoder mf://frame_%09d.png -mf fps=30 -ovc lavc -o my_video.avi

当然,mencoder有很多选项来调整你的电影。

mencoder的另一种选择是ffmpeg

ffmpeg -framerate 1/5 -i frame_%09d.png -c:v libx264 -r 30 -pix_fmt yuv420p my_video.mp4