a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 155|回复: 0

[综合辅导] Linux认证辅导之关于GNUPLOT的使用技巧

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
Linux认证辅导之关于GNUPLOT的使用技巧: e( c9 k3 H. Q. _6 S' N6 ^
GNUPLOT使用技巧
; \  Y+ _9 p3 Y  {# h' j对于在Linux下工作的人,如果你经常要画一些二维图和简单的三维图的话,那么,gnuplot无疑是一个非常好的选择,不仅图形漂亮,而且操作简单。当然如果需要质量更高的三维图,请用其他的一些专业绘图软件。建议大家学会使用gnuplot。这个小软件通常都是RedhatLinux自带的,但自带的版本是3.7的,建议将其升级到4.0,新版本具有很多新功能。最新版本可以到http://www.gnuplot.info/下载。
2 @8 x% A# @/ K) ?) E% ?* L  I8 ^一些最基本的操作请大家看说明书。这里总结一下我在使用过程中遇到的一些问题以及解决的办法,目的是让那些以前不会的或不熟练的能快速入门,会画自己想要的图,因为原来的说明书很长,较难有针对性地很快找到自己想要的信息。这里简单的总结不可能面面俱到,所以大家不要抱怨我写的不全,更全面的了解还是请看说明书,网上的资料也多的是。其实这也是我们从网上一点一点搜集和摸索出来的。我相信看完后,应该平时最常见的问题基本上都能在这里找到答案。如果大家在使用过程中摸索到了我没有写到的技巧和体会,或有其它建议,请大家提告诉我,以不断完善这篇总结,谢谢!
3 U/ S+ u$ ^( ]$ L一、基础篇:/ _  s/ f4 {. M! s4 U0 U$ R  |
在linux命令提示符下运行gnuplot命令启动,输入quit或q或exit退出。# ]- @# g4 {: h. f0 [
1、plot命令gnuplot》 plot sin(x) with line linetype 3 linewidth 2 或gnuplot》 plot sin(x) w l lt 3 lw 2 %用线画,线的类型(包括颜色与虚线的类型)是3,线的宽度是2,对函数sin(x)作图gnuplot》 plot sin(x) with point pointtype 3 pointsize 2 或gnuplot》 plot sin(x) w p pt 3 ps 2 %用点画,点的类型(包括颜色与点的类型)是3,点的大小是2gnuplot》 plot sin(x) title ‘f(x)’ w lp lt 3 lw 2 pt 3 ps 2 %同时用点和线画,这里title ‘f(x)’表示图例上标‘f(x)’,如果不用则用默认选项gnuplot》 plot sin(x) %此时所有选项均用默认值。如果缺某一项则将用默认值gnuplot》 plot ‘a.dat’ u 2:3 w l lt 3 lw 2 %利用数据文件a.dat中的第二和第三列作图顺便提一下,如这里最前面的两个例子所示,在gnuplot中,如果某两个词,按字母先后顺序,前面某几个字母相同,后面的不同,那么只要写到第一个不同的字母就可以了。如with,由于没有其它以w开头的词,因此可以用 w 代替,line也可以用 l 代替。
& {# C1 ^/ A1 J. P: a8 C2、同时画多条曲线gnuplot》 plot sin(x) title ‘sin(x)’ w l lt 1 lw 2, cos(x) title ‘cos(x)’ w l lt 2 lw 2 %两条曲线是用逗号隔开的。画多条曲线时,各曲线间均用逗号隔开就可以了。
- ^/ o% j# d* O7 w( A2 H以上例子中是对函数作图,如果对数据文件作图,将函数名称换为数据文件名即可,但要用单引号引起来。% M6 o+ e' d; ^2 a0 @. Y+ @
3、关于图例的位置默认位置在右上方。
2 Q: C' M7 K9 ngnuplot》 set key left %放在左边,有left 和right两个选项gnuplot》 set key bottom %放在下边,只有这一个选项;默认在上边gnuplot》 set key outside %放在外边,但只能在右面的外边以上三个选项可以进行组合。如:8 {$ e/ X, |* ]# Z+ p5 ?
gnuplot》 set key left bottom %表示左下边还可以直接用坐标精确表示图例的位置,如gnuplot》 set key 0.5,0.6 %将图例放在0.5,0.6的位置处4、关于坐标轴gnuplot》 set xlabel ‘x’ %x轴标为‘x’
% v9 \: |( T# n+ R7 D% h- ]9 c0 Ngnuplot》 set ylabel ‘y’ %y轴标为’y’
- a. n; [' E4 [$ D; _) ^7 l- Ygnuplot》 set ylabel ‘DOS’ tc lt 3 %其中的tc lt 3表示’DOS’的颜色用第三种颜色。# a" o2 l2 ]' _7 T" F! s
gnuplot》 set xtics 1.0 %x轴的主刻度的宽度为1.0,同样可以为y轴定义yticsgnuplot》 set mxtics 3 %x轴上每个主刻度中画3个分刻度,同样可以为y轴定义myticsgnuplot》 set border 3 lt 3 lw 2 %设为第三种边界,颜色类型为3,线宽为2同样可以为上边的x轴(称为x2)和右边y(称为y2)轴进行设置,即x2tics,mx2tics,y2tics,my2tics。$ h/ T: z! c( n' Q, o! }' _; f
gnuplot》 set xtics nomirrorgnuplot》 unset x2tics %以上两条命令去掉上边x2轴的刻度gnuplot》 set ytics nomirrorgnuplot》 unset y2tics %以上两条命令去掉右边y轴的刻度5、在图中插入文字gnuplot》 set label ‘sin(x)’ at 0.5,0.5 %在坐标(0.5,0.5)处加入字符串’sin(x)’。
6 B  V# Z9 z6 L5 F- i在输出为。ps或。eps文件时,如果在set term 的语句中加入了enhanced选现,则可以插入上下标、希腊字母和特殊符号。上下标的插入和latex中的方法是一样的。# S- n1 ~% P% O0 B3 r4 H0 f0 R
6、在图中添加直线和箭头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,线宽类型为2gnuplot》 set arrow from 0.0,0.0 to 0.6,0.8 nohead lt 3 lw 2 %利用nohead可以去掉箭头的头部,这就是添加直线的方法。
/ c* q* E' ~( G注意,在gnuplot中,对于插入多个的label和arrow等等,系统会默认按先后顺序分别对各个label或arrow进行编号,从1开始。如果以后要去掉某个label或arrow,那么只要用unset命令将相应的去掉即可。如:
4 q5 H: B/ |% r/ u; ]  cgnuplot》 unset arrow 2将去掉第二个箭头。
( J, T0 C+ y* |. \1 u3 F7、图的大小和位置gnuplot》set size 0.5,0.5 %长宽均为默认宽度的一半,建议用这个取值,尤其是画成ps或eps图形的时候gnuplot》set origin 0.0,0.5 %设定图的最左下角的那一点在图形面板中的位置。这里图将出现在左上角。! X6 N+ B# y8 I$ {
8、画三维图gnuplot》splot ‘文件名’ u 2:4:5 %以第二和第四列作为x和y坐标,第五列为z坐标。/ q% L+ e4 l) F: S. O
9.将图形输出到文件在gnuplot中,输出文件的格式是由terminal来控制的。默认的情况下,都是输出到屏幕,即终端模式为X11。如果想输出到文件,则必须对terminal进行设置。要了解有那些终端类型,可以输入 setterminal后回车,所有支持的终端模式(或文件格式)都列出来了。就我来说,输出文件的格式用得最多的是ps和eps文件。这在运行画图命令plot或splot前必须先运行如下两条命令:
: ^) ~. y& n4 R5 f  Sgnuplot》set term post eps color solid enhgnuplot》set output ‘a.eps’
( Q) M" s# t0 q1 I: B* v其中第一条命令为设置终端模式,post即为postscript模式,这是输出到ps或eps文件必须有的。后面的eps,color,solid以及enh选项均可以有或没有,根据你的需要。eps表示输出为eps文件,没有就输出为ps文件;color表示输出图形为彩色,不用就会保存为黑白的;solid表示输出图中的所有线都用实线,不用则除了第一条线为实线外,其它的均用不同的虚线;使用enh(enhanced)选项可以在图中插入上下标、希腊字母和特殊符号,不用则不能实现这些功能。后面的选项可以根据自己的需要选择一个或几个。+ l/ }& S, ^7 K* H& @( V: s6 U, T
第二条命令对output的设置表示要输出的文件的名字。但是请注意,运行完这条命令后,还仅仅是定义了输出文件的名字,实际上,图还没画到这个文件里去。因此运行这两条命令还只是进行了必须的设置。然后运行如下命令gnuplot》plot sin(x) w l或gnuplot》replot(假如前面已经运行过plot或replot命令的话)这时,图形就在上面指定的文件中了。
$ C1 e1 x8 G, g* E, \要输出为其它格式,同样要进行这样的设置,比如要输出为jpg格式,则在运行画图命令前先运行如下命令:
# r& k0 S. \& ygnuplot》set term jpeggnuplot》set output ‘a.jpg’
. \& g& q  f* J如果要由其它模式再返回到输出到屏幕,则运行如下命令:
9 X# O( Z% \$ E3 S* |8 j; s9 A( @. q$ w/ o7 r3 g: P: |

; t, p, g0 j7 ngnuplot》set term X11二、提高篇:" t6 y! k% U% ^* m( P' J% R4 X/ p! i
1、如何在同一张图里同时画多个图gnuplot》set multiplot %设置为多图模式gnuplot》set origin 0.0,0.5 %设置第一个图的原点的位置gnuplot》set size 0.5,0.5 %设置第一个图的大小gnuplot》plot “a1.dat”% K- \2 z- k% k- m# T5 Q. S
gnuplot》set origin 0.5,0.5 %设置第二个图的原点的位置gnuplot》set size 0.5,0.5 %设置第二个图的大小gnuplot》plot “a2.dat”6 F1 Q0 f1 _$ h% S. d3 d
gnuplot》set origin 0.0,0.0 %设置第三个图的原点的位置gnuplot》set size 0.5,0.5 %设置第三个图的大小gnuplot》plot “a3.dat”- _, m4 E8 ]9 c& q, H
gnuplot》set origin 0.5,0.0 %设置第四个图的原点的位置gnuplot》set size 0.5,0.5 %设置第四个图的大小gnuplot》plot “a4.dat”& ?5 C! \2 h7 C8 s/ \) C
当然,如果后一个图中的某个量的设置和前一个的相同,那么后一个中的这个量的设置可以省略。例如上面对第二、第三和第四个图的大小的设置。前一个图中对某个量的设置也会在后一个图中起作用。如果要取消在后面图中的作用,必须用如下命令,如取消label,用gnuplot》unset label2、作二维图时,如何使两边坐标轴的单位长度等长gnuplot》 set size square %使图形是方的gnuplot》 set size 0.5,0.5 %使图形是你要的大小gnuplot》 set xrange[-a:a]! Z! g( c* F2 a& J9 R
gnuplot》 set yrange[-a:a] %两坐标轴刻度范围一样gnuplot》 plot ‘a.dat’
5 U. F  d5 j! C4 V3、如何在同一张图里利用左右两边的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:20] %设定x2坐标的范围gnuplot》 replotgnuplot》 set xrange[-5:5] %设定x坐标的范围gnuplot》 replotgnuplot》 set xlabel ‘x’7 }# K' R, X6 E5 M3 [
gnuplot》 set x2label ‘t’; W8 E. R2 R0 ?7 w* r
gnuplot》 set ylabel ‘y’
! z0 s+ M. P% w5 Q- cgnuplot》 set y2label ‘s’6 X; e7 i1 v% S9 e* _3 y
gnuplot》 replotgnuplot》 set title ‘The figure’
+ s$ X) H$ A0 p* D% V2 [8 R2 A& rgnuplot》 replotgnuplot》 set x2label ‘t’ textcolor lt 3 %textcolor lt 3或tc lt 3设置坐标轴名称的颜色4、如何插入希腊字母和特殊符号一般只能在ps和eps图中,且必须指定enhanced选项。在X11终端(即显示器)中无法显示。
" i" x+ X% h' ^7 m* l$ Q/ f, Egnuplot》 set terminal postscript enhanced然后希腊字母就可以通过{/Symbol a}输入。例如gnuplot》 set label ‘{/Symbol a}’
0 Y  |$ }% j: o各种希腊字母与特殊符号的输入方法请见安装包中gnuplot-4.0.0/docs/psdoc目录下的ps_guide.ps文件。
- |; h7 ^+ e/ T9 [7 N4 ^; V另外还可参见:% n" Y7 I* O" D% K& ]. U
http://t16web.lanl.gov/Kawano/gnuplot/label-e.html#4.35、gnuplot中如何插入Angstrom(埃)这个符号(A上面一个小圆圈)脚本中在插入前先加入gnuplot》set encoding iso_8859_1这个命令,然后就可以通过“{\305}”加入了。如横坐标要标上“k(1/?)”:; w1 T* ^- q( t( q1 B+ I
gnuplot》set xlabel ‘k(1/{\305})如果是multiplot模式,则这个命令必须放在gnuplot》set multiplot的前面。( V: h8 H0 \  g: _+ o
如果后面还要插入别的转义字符,那么还要在插入字符后加入如下命令:
" [' E- U7 G8 |% u. C# j" @# @0 A2 Tset encoding default安装包中gnuplot-4.0.0/docs/psdoc/ps_guide.ps文件中的表中的‘E’代表那一列的所有符号都用这个方法输入。
, M! x) l1 z' T" Z; [# z5 M$ o6、gnuplot画等高线图gnuplot》splot ‘文件名。dat’ u 1:2:3 w l %做三维图gnuplot》set dgrid3d 100,100 %设置三维图表面的网格的数目gnuplot》replotgnuplot》set contour %设置画等高线gnuplot》set cntrparam levels incremental -0.2,0.01,0.2 %设置等高线的疏密和范围,数据从 -0.2到0.2中间每隔0.01画一条线gnuplot》unset surface 去掉上面的三维图形最后用鼠标拽动图形,选择合理的角度即可。或者直接设置(0,0)的视角也可以:
" ^6 g; O8 M+ w7 a( l+ lgnuplot》set view 0,0gnuplot》replot这里注意,画三维图的数据文件必须是分块的,也就是x每变换一个值,y在其变化范围内变化一周,这样作为一块,然后再取一个x值,y再变化一周,作为下一数据块,等等。块与块之间用一空行格开。
! G6 u2 _6 p0 z# c' u7、如何画漂亮的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 %重画,注意看变化,主要是过渡更光滑8、利用脚本文件避免重复输入有时候对某个数据文件做好一张图后,下次可能还要利用这个数据文件作图,但某个或某些设置要作些细微变化。这时候,可以把第一次作图时的命令全部写到一个文件里,如a.plt,下次只要将相应的设置做修改后,用下面的命令就会自动运行文件所有的命令而最后得到你要的图:8 d' W9 Z# T) k( u& o7 {; l
gnuplot》load ‘a.plt’
# i5 k- {+ S0 ^1 H; C4 m作为一个例子,假设文件名为a.plt,里面的内容为:
; ]3 Y% q  o4 c6 A3 mset pm3dset view 0,0unset zticsset isosamples 200,200splot x**2+y**2 w pm3dset term post colorset output ‘a.ps’
' o3 Y( s) r' k6 Z" f( m5 _replot那么启动gnuplot后,只要运行如下命令就可以了:' |. `& L0 c: {% Q2 I( \; [
gnuplot》load ‘a.plt’
* G! M* T  c8 L6 [  L# d: F9 Z5 g如果我们要得到的仅仅是。ps或。eps图,那也可以在linux命令提示符下直接运行如下命令:
* O- q( y3 M" j. f" w[zxh@theory zxh]$gnuplot a.plt9、在gnuplot模式下运行linux命令在gnuplot提示符下也可以运行linux命令,但必须在相应的命令前面加上 ! 号。例如,假设很多参量都已经设置好了,但需要对某个数据文件a.dat进行修改后再画图,则可以用如下方式gnuplot》!vi a.dat通过这种方式,所有的linux命令都可以在gnuplot环境里运行。! N4 |+ t! s2 [+ R4 U/ q- Y2 M
另外,也可以在gnuplot的提示符后输入shell,暂时性退出gnuplot,进入linux环境,做完要做的事情后,运行exit命令,又回到gnuplot环境下。
& X, n! R# j% z, G  b& bgnuplot》shell[zxh@theory zxh]$vi a.f[zxh@theory zxh]$f77 a.f[zxh@theory zxh]$a.out (假设生成a.dat数据文件)[zxh@theory zxh]$exitgnuplot》plot ‘a.dat’ w l
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 02:35 , Processed in 0.195780 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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