怎么用gnuplot画动图

来源:互联网 发布:php初级程序员面试题 编辑:程序博客网 时间:2024/06/11 09:52

大家都知道,gnuplot作图功能强大,但是有很多功能都是靠自己去摸索实验的,只有有创意,有想法,才会画出赏心悦目的图像。

首先提供一个有gnuplot教程的网址http://www.gnuplotting.org/tag/animation/

我是看了这些例子后自己摸索的。

画动图我分为两种,一种是直接输出很多张图片,然后用某些flash软件合成,我用的是Ulead gif animator。另外一种是直接输出gif图片,这才是我想讲的重点。

(一)用输出很多图片然后合成的方式

我直接给链接http://www.gnuplotting.org/animation-iv-trajectory/​

填写图片摘要(选填)

在这个网址里面的图片上直接有code、data下载。

(二)直接输出gif图像

(1)知道公式的情况下画图​

这个需要用到for循环,看下面的代码:

set term gif animate delay 10 size 960,960

set title 'the sin(x) picture'

set output "sin(x).gif"

set xlabel 'x'

set ylabel 'y'

set xrange[0:8*pi]

set yrange[-1:1]

unset key

i=1

load 'loopersinx.plt'

(looper.plt文件代码是下面的带#的三行)​

#plot sin(x+i*pi/5)

#i=i+1

#if(i<40) reread

set output

关键在于需要用两个文件来写,在其中一个文件调用另一个looper文件实现gif的编辑,这是画gif的关键。其他设置比如delay之类的参数这里就不细说了。

这是画出来的效果图:​

填写图片摘要(选填)

(2)画数据点,没有公式。

​这是知道公式前提下画出的图,但是有时候没有公式,只有一串数据怎么办呢?

这时候需要用到every,用法为every step::fist:last 第一个参数为步长,第二个为其实点,第三个终止点。我直接给出一个画三维图的例子。

set term gif animate delay 20 size 960,960

set title 'the sin and cos'

set output "animate3.gif"

set xlabel 'x'

set ylabel 'y'

set zlabel 'z'

set xrange [-1:1]

set yrange [0:20]

set zrange [-1:1]

unset key

i=1

load 'looper1.plt'

looper1.plt 的文件内容如下:

splot      'spiral.txt' every ::i::i with points pointsize  6 pointtype 7

i=i+1

if(i<100) reread

填写图片摘要(选填)

这里every的i::i画出来是一个点,如果要画点加线用到every 1::0::i​

还有一个三维图的例子:

不断画三维图形

​代码如下:

set term gif animate delay 20 size 500,700

set title 'the wave guide'

set output "animate4.gif"

set xlabel 'x'

set ylabel 'y'

set zlabel 'z'

#set xrange [40:120]

set yrange [40:120]

set zrange [-160:180]

unset key

i=6420

load 'looper1.plt'

set output

looper1.plt的代码如下:

splot      'wave.txt' every 1::6419::i with linespoints pointsize  1 pointtype 1

set hidden3d

i=i+120

if(i<19200) reread

具体的txt文件在这里就不展示了。

0 0
原创粉丝点击