gnuplot绘制gif动图
Gnuplot #Plot
初衷
本科时候学习计算物理,搞生物物理计算的老师推荐我们用fortran写计算的程序,速度非常快,而画图推荐用gnuplot, 当时课上都在用都在学,我也就入了gnuplot的坑。后来自己没有真正完全做计算,所以使用MATLAB, python写代码的时间多一些,gnuplot也就没有继续使用了。 本篇笔记是当时本科写的一个笔记,最开始发表在新浪博客。 当时也是摸索了很久,所以记录一下绘图过程。
大家都知道,gnuplot作图功能强大,但是有很多功能都是靠自己去摸索实验的,只有有创意,有想法,才会画出赏心悦目的图像。这个软件非常下,不过你所能想到的图形他都可以画。
首先提供一个gnuplot动图教程的网址 http://www.gnuplotting.org/tag/animation/
我是看了这些例子后自己摸索出来的。
画动图我分为两种,
- 一是直接输出很多张图片,然后用某些flash软件合成,我用的是Ulead gif animator。
- 另外一种是直接用代码输出绘制动图并且输出gif图片,这是本次笔记的重点。
画很多图片,然后用软件合成
我直接给链接 http://www.gnuplotting.org/animation-iv-trajectory/
这个网站里面很多有意思的图片,还有源代码供下载。
直接输出动图
有公式的绘图
直接输出动图,需要在gnuplot里面用到循环。当我们直接画可以用公式表达的图像时,比如正弦图像等,下面是我的一个具体的例子,首先时创建一个plot的文件:‘plotfunction.plt’,内容如下
1 | set term gif animate delay 10 size 600,400 #设置图片大小以及间隔时间 |
上面调用了一个“loop_sinx.plt”的文件,文件内容为:
1 | plot sin(x/3+i*pi/5)*exp(-x/4) with lines lw 3 #画图 |
直接在gnuplot控制台输入:
1 | load 'plotfunction.plt' |
就可以在对应文件夹得到我们需要的动图了:
没有公式的绘图
上面的plot命令时绘制的函数图像,我们还可以从数据点绘制,并且只要好好的安排数据点的排序,以及用好‘every’等命令,就可以画出很多有意思的图像,下面给出例子。
例子一
1 | set term gif animate delay 20 size 960,960 |
其中文件’looper1.plt’的内容为
1 | splot 'spiral.txt' every ::i::i with points pointsize 6 pointtype 7 |
画出来的动图如下:
例子二
1 | set term gif animate delay 20 size 500,700 |
其中循环文件’looper1.plt’内容为
1 | splot 'wave.txt' every 1::6419::i with linespoints pointsize 1 pointtype 1 |
画出来的动图如下:
当然我都没有提供我的原txt文件,这是本科时候弄得,文件弄丢了,本笔记与2016年7月26日首发于http://blog.sina.com.cn/s/blog_e5262fc80102w7z4.html
gnuplot还是很小巧精美的工具,不过自己最近基本用的MATLAB了,配套的软件画图更方便一些。