QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4296|回复: 0

Gnuplot 入门 zz

[复制链接]
发表于 2006-11-16 20:27:27 | 显示全部楼层 |阅读模式
初识Gnuplot

        关键词: Gnuplot    作图工具    开源软件    Latex    2D图形                                          

今天在Bear的指引下终于知道有Gnuplot这样一个开源的作图工具了, 感谢一下Bear先! 恭喜下自己再! 以前一直用Matlab或Visio作图, 倒也得心应手, 这次接触这样一个小软件, 大小压缩后只有2M多一点, 功能却很强大哦! 我使用的是windows下的4.0版本, 所以有图形界面,
不过也带有命令输入行. 一种强烈的似曾相识的感觉----对! 和matlab的命令作图方式很像! 操作起来也一样(或类似), 所以上手起来也很快. 只是,... 用matlab已经很熟了, 有什么理由转而用这个小东东呢? 要熟练适用至少需要一定的时间吧? 很快, 我就说服自己了, 这个东东很小,
启动起来很快, 多掌握一种工具也未尝不可啊! 只是我更感兴趣的是去找找它有没有画量子线路图的功能, 呵呵, 如果有的话就太好了! 因为用visio画量子线路图实在是太辛苦了. 虽然已经有人开发出latex中画量子线路图的宏包, 但是个人感觉画的不是很好看, 而且要像写代码似的,
太难学难记了, 还是倾向于适用图形化的设计的东东.

gnuplot中很基本的两个函数(命令?)是plot和splot, 其中plot用于画2D图形, splot用于画3D图形.例如:

gnuplot> plot sin(x) w l lt 3 lw 2 %用线画,线的类型(包括颜色与虚线的类型)是3,线的宽度是2,对函数sin(x)作图. 当然了, 它也可以给图形加标题之类的说明文字, 如:

gnuplot> plot sin(x) title 'f(x)' w lp lt 3 lw 2 pt 3 ps 2 %同时用点和线画,这里title ‘f(x)’表示图例上标'f(x)',如果不用则用默认选项

和matlab类似, 这些操作除了可以用命令实现外, 也可以用菜单里的命令来完成. 当然, 命令是最基本功能最强大的. 而且gnuplot还可以根据数据文件来作图:

gnuplot> plot ‘a.dat’ u 2:3 w l lt 3 lw 2 %利用数据文件a.dat中的第二和第三列作图

在gnuplot中,如果某两个词,按字母先后顺序,前面某几个字母相同,后面的不同,那么只要写到第一个不同的字母就可以了。如with,由于没有其它以w开头的词,因此可以用 w 代替,line也可以用
l 代替。

1、同时画多条曲线

gnuplot> plot sin(x) title ‘sin(x)’ w l lt 1 lw 2, cos(x) title ‘cos(x)’ w l lt 2 lw 2 %两条曲线是用逗号隔开的。画多条曲线时,各曲线间均用逗号隔开就可以了。

以上例子中是对函数作图,如果对数据文件作图,将函数名称换为数据文件名即可,但要用单引号引起来。

2、关于图例的位置
默认位置在右上方。

gnuplot> set key left %放在左边,有left 和right两个选项
gnuplot> set key bottom %放在下边,只有这一个选项;默认在上边
gnuplot> set key outside %放在外边,但只能在右面的外边
以上三个选项可以进行组合。如:
gnuplot> set key left bottom %表示左下边
还可以直接用坐标精确表示图例的位置,如
gnuplot> set key 0.5,0.6 %将图例放在0.5,0.6的位置处

3、关于坐标轴

gnuplot> set xlabel ‘x’ %x轴标为‘x’
gnuplot> set ylabel ‘y’ %y轴标为’y’
gnuplot> set ylabel ‘DOS’ tc lt 3 %其中的tc lt 3表示’DOS’的颜色用第三种颜色。
gnuplot> set xtics 1.0 %x轴的主刻度的宽度为1.0,同样可以为y轴定义ytics
gnuplot> set mxtics 3 %x轴上每个主刻度中画3个分刻度,同样可以为y轴定义mytics
gnuplot> set border 3 lt 3 lw 2 %设为第三种边界,颜色类型为3,线宽为2

同样可以为上边的x轴(称为x2)和右边y(称为y2)轴进行设置,即x2tics,mx2tics,y2tics,my2tics。

gnuplot> set xtics nomirror
gnuplot> unset x2tics %以上两条命令去掉上边x2轴的刻度
gnuplot> set ytics nomirror
gnuplot> unset y2tics %以上两条命令去掉右边y轴的刻度

4、在图中插入文字

gnuplot> set label ‘sin(x)’ at 0.5,0.5 %在坐标(0.5,0.5)处加入字符串’sin(x)’。
在输出为.ps或.eps文件时,如果在set term 的语句中加入了enhanced选现,则可以插入上下标、希腊字母和特殊符号。上下标的插入和latex中的方法是一样的。

5、在图中添加直线和箭头

gnuplot> set arrow from 0.0,0.0 to 0.6,0.8 %从(0.0,0.0)到(0.6,0.8)画一个箭头
gnuplot> set arrow from 0.0,0.0 to 0.6,0.8 lt 3 lw 2 %这个箭头颜色类型为3,线宽类型为2
gnuplot> set arrow from 0.0,0.0 to 0.6,0.8 nohead lt 3 lw 2 %利用nohead可以去掉箭头的头部,这就是添加直线的方法。

注意,在gnuplot中,对于插入多个的label和arrow等等,系统会默认按先后顺序分别对各个label或arrow进行编号,从1开始。如果以后要去掉某个label或arrow,那么只要用unset命令将相应的去掉即可。如:

gnuplot> unset arrow 2
将去掉第二个箭头。

6、图的大小和位置

gnuplot>set size 0.5,0.5 %长宽均为默认宽度的一半,建议用这个取值,尤其是画成ps或eps图形的时候
gnuplot>set origin 0.0,0.5 %设定图的最左下角的那一点在图形面板中的位置。这里图将出现在左上角。

7、画三维图

gnuplot>splot ‘文件名’ u 2:4:5 %以第二和第四列作为x和y坐标,第五列为z坐标。

另外一些技巧:

1、如何在同一张图里同时画多个图

gnuplot>set multiplot %设置为多图模式
gnuplot>set origin 0.0,0.0 %设置第一个图的原点的位置
gnuplot>set size 0.5,0.5 %设置第一个图的大小
gnuplot>plot “a1.dat”
gnuplot>set origin 0.0,0.5 %设置第二个图的原点的位置
gnuplot>set size 0.5,0.5 %设置第二个图的大小
gnuplot>plot “a2.dat”
gnuplot>set origin 0.0,0.0 %设置第三个图的原点的位置
gnuplot>set size 0.5,0.5 %设置第三个图的大小
gnuplot>plot “a3.dat”
gnuplot>set origin 0.0,0.0 %设置第四个图的原点的位置
gnuplot>set size 0.5,0.5 %设置第四个图的大小
gnuplot>plot “a4.dat”

当然,如果后一个图中的某个量的设置和前一个的相同,那么后一个中的这个量的
设置可以省略。例如上面对第二、第三和第四个图的大小的设置。前一个图中对某
个量的设置也会在后一个图中起作用。如果要取消在后面图中的作用,必须用如下
命令,如取消label,用
gnuplot>unset label

2、作二维图时,如何使两边坐标轴的单位长度等长

gnuplot> set size square %使图形是方的
gnuplot> set size 0.5,0.5 %使图形是你要的大小
gnuplot> set xrange[-a]
gnuplot> set yrange[-a] %两坐标轴刻度范围一样
gnuplot> plot ‘a.dat’

3、如何在同一张图里利用左右两边的y轴分别画图

gnuplot> set xtics nomirror %去掉上面坐标轴x2的刻度
gnuplot> set ytics nomirror %去掉右边坐标轴y2的刻度
gnuplot> set x2tics %让上面坐标轴x2刻度自动产生
gnuplot> set y2tics %让右边坐标轴y2的刻度自动产生
gnuplot> plot sin(x),cos(x) axes x1y2 %cos(x)用x1y2坐标,axes x1y2表示用x1y2坐标轴
gnuplot> plot sin(x),cos(x) axes x2y2 %cos(x)用x2y2坐标,axes x2y2表示用x2y2坐标轴
gnuplot> set x2range[-20] %设定x2坐标的范围
gnuplot> replot
gnuplot> set xrange[-5] %设定x坐标的范围
gnuplot> replot
gnuplot> set xlabel 'x'
gnuplot> set x2label 't'
gnuplot> set ylabel 'y'
gnuplot> set y2label 's'
gnuplot> replot
gnuplot> set title 'The figure'
gnuplot> replot
gnuplot> set x2label 't' textcolor lt 3 %textcolor lt 3或tc lt 3设置坐标轴名称的颜色

4、如何插入希腊字母和特殊符号

一般只能在ps和eps图中,且必须指定enhanced选项。在X11终端(即显示器)中无法显示。

gnuplot> set terminal postscript enhanced
然后希腊字母就可以通过{/Symbol a}输入。例如
gnuplot> set label ‘{/Symbol a}’

各种希腊字母与特殊符号的输入方法请见安装包中gnuplot-4.0.0/docs/psdoc目录下的ps_guide.ps文件。

另外还可参见:

http://t16web.lanl.gov/Kawano/gnuplot/label-e.html#4.3

5、gnuplot中如何插入Angstrom(埃)这个符号(A上面一个小圆圈)

脚本中在插入前先加入

gnuplot>set encoding iso_8859_1

这个命令,然后就可以通过“{\305}”加入了。如横坐标要标上“k(1/?)”:

gnuplot>set xlabel 'k(1/{\305})

如果是multiplot模式,则这个命令必须放在

gnuplot>set multiplot

的前面。

如果后面还要插入别的转义字符,那么还要在插入字符后加入如下命令:

set encoding default

安装包中gnuplot-4.0.0/docs/psdoc/ps_guide.ps文件中的表中的‘E’代表那一列
的所有符号都用这个方法输入。

6、gnuplot画等高线图

gnuplot>splot ‘文件名.dat’ u 1:2:3 w l %做三维图
gnuplot>set dgrid3d 100,100 %设置三维图表面的网格的数目
gnuplot>replot
gnuplot>set contour %设置画等高线
gnuplot>set cntrparam levels incremental -0.2,0.01,0.2 %设置等高线的疏密和范围,数据从 -0.2到0.2中间每隔0.01画一条线
gnuplot>unset surface 去掉上面的三维图形

最后用鼠标拽动图形,选择合理的角度即可。或者直接设置(0,0)的视角也可以:

gnuplot>set view 0,0
gnuplot>replot

这里注意,画三维图的数据文件必须是分块的,也就是x每变换一个值,y在其变化
范围内变化一周,这样作为一块,然后再取一个x值,y再变化一周,作为下一数据
块,等等。块与块之间用一空行格开。

7、输出为ps或eps图时,以下几个选项值得特别注意

gnuplot>set term postscript eps enh solid color

其中eps选项表示输出为eps格式,去掉则表示用默认的ps格式;enh选项表示图中可
以插入上下标、希腊字母及其它特殊符号,如果去掉则不能插入;solid选项表示图
中所有的曲线都用实线,去掉则将用不同的虚线;color选项表示在图中全部曲线用
彩色,去掉则将用黑白。

8、如何画漂亮的pm3d图

gnuplot> set pm3d %设置pm3d模式
gnuplot> set isosamples 50,50 %设置网格点
gnuplot> splot x**2+y**2 %画三维图
gnuplot> splot x**2+y**2 w pm3d %画成pm3d模式,注意比较变化
gnuplot> set view 0,0 %设置视角,(0,0)将投影到底面上去
gnuplot> splot x**2+y**2 w pm3d %重画,注意看变化
gnuplot> unset ztics %把z轴上的数字给去掉
gnuplot> set isosamples 200,200 %使网格变细
gnuplot> replot %重画,注意看变化,主要是过渡更光滑

9、利用脚本文件避免重复输入

有时候对某个数据文件做好一张图后,下次可能还要利用这个数据文件作图,但某个或某些设置要作些细微变化。这时候,可以把第一次作图时的命令全部写到一个文件里,如a.plt,下次只要将相应的设置做修改后,用下面的命令就会自动运行文件所有的命令而最后得到你要的图:
gnuplot>load ‘a.plt’

作为一个例子,假设文件名为a.plt,里面的内容为:

set pm3d
set view 0,0
unset ztics
set isosamples 200,200
splot x**2+y**2 w pm3d
set term post color
set output ‘a.ps’
replot

那么启动gnuplot后,只要运行如下命令就可以了:

gnuplot>load ‘a.plt’

如果我们要得到的仅仅是.ps或.eps图,那也可以在linux命令提示符下直接运行如
下命令:

[zxh@theory zxh]$gnuplot a.plt
(教程部分引自http://202.127.203.201/jilei/Gnuplot.htm,    暂时没有发现作量子线路图的方法)

--
※ 来源:.天大求实BBS bbs.tju.edu.cn.[FROM: 202.113.13.188]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-20 20:50 , Processed in 0.067519 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表