Wednesday, June 16, 2004

gnuplot

gnuplot是一个命令行互交方式的多平台的绘图软件,它支持的平台有windows,dos,os/2,linux,unix。它能绘制2d,3d等多种类型的图形。 1,绘制2d图像 gnuplot能绘制各种2d图像。比如下面的命令能绘制y=sin(x)的图像 plot sin(x) 如果你在linux平台下,这时你应该能看见一个跳出的图形窗口。如果你在windos下,通过cygwin来使用gnuplot,那么你也许什么也看不见。不要着急,这是因为你还需要设置一下 set terminal postscript set ouput "2d.ps" 然后重新执行plot sin(x)。这时在当前目录下你应该能够看到2d.ps这个文件,通过GSview你就能看到所绘制的图形了。 看到这你也许会感到有些不耐烦,怎么这么麻烦。开始我也觉的这很麻烦,但当我多次使用了之后,我就发现gnuplot的可爱之处了。首先,通过set term命令,你能指定多种输出格式ps,png,jpg,pdf。其次,当你通过很大的文件来绘图时,像我,要通过一个77M的文件来绘制我计算的结果,如果你使用的是tecplot,那么当你打开tecplot之后,你最好什么也别干,否则的话,tecplot很可能会失去响应,然后你不得不再重新打开它,其次当你在绘图完成后想做点修改的话,你很可能要做一次修改,等着tecplot重新绘图,然后下一个修改,再重新绘图。而gnuplot则不是这样,它绘图的时候你你可以做你想做的事情,比如上bbs,写点东西了。你要是想修改一些地方,你可以在配置文件里把它们都修改完,然后灾绘图。 罗里罗嗦的说了这么多,还是回到正题吧。set terminal 可以简写为set term,gnuplot支持很多种输出格式,具体的你可以看它的帮助。在linux下,默认的term是x11也就说,它会在你绘图的时候跳出一个x窗口,显示图形。如果你想要保存图形,你就要set term,比如set term png这时再次绘制图形时就会输出ps格式的文件,文件名由set output指定。 plot命令用来绘制最简单的2d图形。plot function可以根据函数来绘制2d图形,例如 f(x) =sin(x)+x**2+3*x/4 plot f(x) 上面的命令将绘制函数f(x)。gnuplot内置了很多函数,C语言支持的函数它基本上都支持,想要查看gnuplot支持什么函数和相关的支持的一元,二元,三元操作符,可以查看它的帮助。顺便说一句,在gnuplot种5/2=2不是2.5,想要得到2.5你应该写成5.0/2的格式,这和 fortran,C语言有些类似,或者说你可以使用C、fortran中定义表达式的方式。 gnuplot也可以根据数据文件来绘制图形,对于2d图形来说,你只需要将数据用空格或者其他分隔符格开,比如有下面这样的一个数据文件。 test.dat 1 2 3 5 2.3 3.5 4.4 0.5 2.6 3.5 2.6 2.8 5.8 6.9 4.5 2.6 你可以使用 plot "test.dat" 来绘制xy图形,plot将默认用第一列做x值,第二列做y值。 plot "test.dat" using 2:3 将使用第二列做x值,第三列做y值。 plot "test.dat" using 2:3,sin(x) 将同时绘制sin(x)和test.dat