您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > gnuplot-tutorial
科学绘图软件Gnuplot使用指南红领巾June13,2007摘摘摘要要要:::Gnuplot是用来绘制2D与3D图形的命令行程序,它的功能不如那些商业数学软件强大,但相对于Mathematica或Matlab这样复杂的软件,它显得简易、灵活。如果你仅仅是想绘制一些图形,又不愿意去学习与绘图无关的东西,Gnuplot是较为理想的选择。本文介绍Gnuplot各重要的功能与基本用法,所用的操作系统环境为Linux。1启启启动动动与与与退退退出出出在终端键入gnuplot命令,即可进入gnuplot命令交互环境:$gnuplot在gnuplot命令交互环境中键入exit命令,即可退出gnuplot环境:gnuplotexit2函函函数数数与与与图图图形形形2D图形中,函数的自变量是x,在3D图形中,函数的自变量是x与y。乘法运算符为*,除法运算符为/,幂运算符为**。例如,多项式3x4+4x−23,在gnuplot中写为:3*x**4+4*x-2/3要绘制上面示例中的多项式图形,在gnuplot命令交互环境中,键入:gnuplotplot3*x**4+4*x-2/31-500005000100001500020000250003000035000-10-505103*x**4+4*x-2/3Figure1:gnuplot简单二维图形绘制示例生成的图形如图1所示。图2为函数f(x)=x2+y2的图形。观察图1与图2,可发现自变量x与y的范围为[-10,10],这是gnuplot自变量默认的取值范围。gnuplot内部预定义了一些函数:•标准三角函数:sin(x),cos(x),tan(x),π采用pi表示;•反三角函数:asin(x),acos(x),atanh(x);•双曲函数:sinh(x),cosh(x),tanh(x);•指数与对数函数:exp函数可以求自然底数e的的幂,如4e2x,在gnuplot中可采用4*exp(2*x)计算;log(x)函数计算以e为底,x的对数;对上面所列函数,欲知其详细信息,可在gnuplot命令交互环境中输入“help函函函数数数名名名”命令查询,如查询正弦双曲函数sinh信息:gnuplothelpsinh2-10-50510-10-50510020406080100120140160180200x**2+y**2Figure2:gnuplot简单三维图形绘制示例3二二二维维维函函函数数数图图图形形形绘绘绘制制制Gnuplot用于二维图形绘制的命令是plot,该命令用法如下:plotfunction譬如绘制函数y=x3的图形,可采用如下命令,绘制结果如图3所示:plotx**3采用如下命令可绘制双曲余弦函数图形,绘制结果如图4所示:plotcosh(x)注意,在图4中x轴与y轴刻度的比例并非1:1,但它可以告诉我们这样一个事实:随着x的变化,y值可能会变的非常大。如果需要观察x接近0值时的双曲余弦曲线,就需要调整x轴与y轴刻度比例。Gnuplot使用了一种自动缩放机制,它针对图形显示屏幕的长宽来调整图形缩放比例,要修改这个缩放比例,可采用如下plot命令格式之一实现:3-1000-50005001000-10-50510x**3Figure3:y=x**3plot[x1:x2][y1:y2]functionplot[x1:x2]functionplot[][y1:y2]function下面这条命令可以修改x变量默认范围为[-1:1](见上一节,x变量默认范围是[-10:10])。要注意的是:若在一副图形中设置了x变量范围,所设结果会影响到以后所有图形。setxrange[-1:1]要改回x的默认范围,采用以下命令:setxrange[=10:10]对于变量y的默认范围修改命令类似x,如下命令可将其修改为[-1:1],修改结果将影响到后续的图形绘制:setyrange[-1:1]4020004000600080001000012000-10-50510cosh(x)Figure4:y=cosh(x)对于绘制二维图形而言,变量y范围通常默认设置是可自由伸缩的,如果你对y的范围作了修改,可采用如下命令对其进行复原:setautoscaley若想对“setxrange、setyrange、setautoscale”等命令有更深入的了解,请阅读gnuplothelp文档。4三三三维维维函函函数数数图图图形形形绘绘绘制制制Gnuplot绘制三维函数图形的命令是splot,基本用法如下:splotfunction譬如以下命令可绘制函数z=−x3−y图形,绘制结果如图5所示。与plot类似,也可以实现图形缩放比例的修改:5-10-50510-10-50510-1500-1000-500050010001500-x**3-yFigure5:z=-x**3-ysplot[x1:x2][y1:y2][z1:z2]functionsplot[x1:x2]functionsplot[][y1:y2]splot[][][z1:z2]也可以采用以下命令来修改变量的默认范围:setxrange[x1:x2]setyrange[y1:y2]setzrange[z1:z2]要改回x与y的默认范围,采用如下命令:setxrange[-10:10]setyrange[-10:10]对于绘制三维图形而言,变量z范围通常默认设置是可自由伸缩的,如果你对z的范围作了修改,可采用如下命令对其进行复原:6-2-1.5-1-0.500.511.52-2-1.5-1-0.500.511.5200.10.20.30.40.50.60.70.82*(x**2+y**2)*exp(-x**2-y**2)Figure6:z=2*(x**2+y**2)*exp(-x**2-y**2)setautoscalez欲了解有关图形自动缩放的更多信息,请在gnuplot命令交互环境中键入“helpautoscale”,查看gnuplothelp信息。5三三三维维维隐隐隐藏藏藏面面面摘摘摘除除除三维图形在二维显示器上的显示实际上仅仅是不同角度的投影,这种投影很容易带来视觉上的干扰,导致无法分辨图形所表达的三维形体,比如函数z=2(x2+y2)exp(−x2−y2)的图形,采用如下命令绘制,绘制结果如图6所示。setgridsplot[-2:2][-2:2]2*(x**2+y**2)*exp(-x**2-y**2)注意,以上命令中,“setgrid”的作用是设置坐标系平面的栅格。由图6可见,对于所绘制的曲面图形,由于曲面投影图中,相对于我们的观察位置,曲面前后面投影叠加到一起,导致图形所表示的曲面形体难以72*(x**2+y**2)*exp(-x**2-y**2)-2-1.5-1-0.500.511.52-2-1.5-1-0.500.511.5200.10.20.30.40.50.60.70.8Figure7:z=2*(x**2+y**2)*exp(-x**2-y**2)辨识,若继续在gnuplot命令交互环境中键入以下命令可实现隐藏面摘除效果:sethiddenreplot隐藏面摘除效果如图7所示。6增增增加加加三三三维维维图图图形形形分分分辨辨辨率率率上一节中绘制的三维图形,由于gnuplot默认的图形分辨率太低,导致图形不够细腻。要解决这一问题,需要增大图形预设精度,这在二维图形绘制中,可以采用“setsamples”命令实现;在三维图形绘制中,要使用“setisosamples”命令实现。“setisosamples”基本用法如下:setisosamplesx_rate,y_rate82*(x**2+y**2)*exp(-x**2-y**2)-2-1.5-1-0.500.511.52-2-1.5-1-0.500.511.5200.10.20.30.40.50.60.70.8Figure8:z=2*(x**2+y**2)*exp(-x**2-y**2)默认的xrate与yrate皆为10。对于上一节中的示例,采用以下命令可增大图形显示精度,效果见图8。setisosample30,30splot[-2:2][-2:2]2*(x**2+y**2)*exp(-x**2-y**2)注意:你所设置的图形显示精度越高,那么图形渲染的速度就越低。通常而言,xrate与yrate设置为30即可。97添添添加加加等等等高高高线线线以下命令是与三维图形中等高线的绘制有关:•setcontourbase-在图形基面上绘制等高线•setcontoursurface-在三维物体表面上绘制等高线•setcontourboth-既在图形基面上,又在三维物体表面上绘制等高线•setnocontour-关闭等高线绘制功能下面以函数z=2(x2+y2)exp(−x2−y2)的图形为例,使用以下命令绘制该函数图形及等高线:sethidden3dsetcountourbasesplot[-2:2][-2:2]2*(x**2+y**2)*exp(-x**2-y**2)绘制效果如图9所示。在三维物体表面上绘制等高线时,不能开启隐藏面摘除功能:unsethidden3dsetcontoursurfacereplot关闭隐藏面摘除功能,在三维物体表面上显示等高线效果见图10。若仅仅要求显示等高线,可使用unsetsurface命令不显示曲面。unsetsurfacereplot不显示曲面,仅显示其等高线的效果见图11。等高线的绘制是高度可定制的,详情参阅‘helpsetcntrparam”。102*(x**2+y**2)*exp(-x**2-y**2)0.60.40.2-2-1.5-1-0.500.511.52-2-1.5-1-0.500.511.5200.10.20.30.40.50.60.70.8Figure9:z=2*(x**2+y**2)*exp(-x**2-y**2)-2-1.5-1-0.500.511.52-2-1.5-1-0.500.511.5200.10.20.30.40.50.60.70.82*(x**2+y**2)*exp(-x**2-y**2)0.60.40.2Figure10:z=2*(x**2+y**2)*exp(-x**2-y**2)11-2-1.5-1-0.500.511.52-2-1.5-1-0.500.511.5200.10.20.30.40.50.60.70.80.60.40.2Figure11:z=2*(x**2+y**2)*exp(-x**2-y**2)8视视视角角角变变变换换换很多情况下,需要变换图形的观察位置,可使用“setview”命令实现1。这个命令相当难用,其用法大致如下:setviewhorizontal_angle,vertical_anglesetviewhorizontal_angle,vertical_angle,scalesetviewhorizontal_angle,vertical_angle,scale_h,scale_vsetview,,zoom“setview”命令的第一个参数水平视角,是图形从初始状态绕x轴正向逆时针转动的角度,范围为[0:180];第二个参数为垂直视角;其余参数为缩放因子,scale是横向与竖向等比缩放银子,scaleh是沿z轴正向逆时针转动的角度,范围为[0:360],scalev是水平方向的缩放因子;第四个参数是竖直方向的缩放因子。Gnuplot默认的视角参数为(60,30,1)。1实际上,至少在gnuplot4.0版本中已经可以采用鼠标交互旋转视图了12(x**2+3*y**2)*exp(1-(x**2+y**2))-2-1012-2-101200.511.522.53Figure12:(x**2+3*y**2)*exp(1-(x**2+y**2))以函数z=(x2+3y2)exp(1−(x2+y2))为例,首先绘制其图形,如图12所示:sethidden3dse
本文标题:gnuplot-tutorial
链接地址:https://www.777doc.com/doc-4712304 .html