Gnuplot简单使用Gnuplot简单使用2008年12月第1页Gnuplot简单使用一、最简单的例子gnuplotplotsin(x)其中gnuplot为命令提示符,不是命令的一部分,结果如下:二、加入设置1、设置x、y坐标的范围改变坐标范围setxrange[xmin:xmax]setyrange[ymin:ymax]让gnuplot决定坐标轴范围gnuplotsetautoscale也可以只在本次绘图中设置,使用plot[xmin:xmax][ymin:ymax]f(x),例如:gnuplotplot[0:5][-2:2]sin(x),结果如下第2页Gnuplot简单使用可只设置x或y的范围,如只设置x范围gnuplotplot[0:5]sin(x)结果:只设置y的范围gnuplotplot[][0:1]sin(x)结果:只设置一边,如设置y为小于0gnuplotplot[][:0]sin(x)结果:第3页Gnuplot简单使用2、设置坐标轴名称gnuplotsetxlabel‘xlabel’;setylabel‘ylabel’;plotsin(x)可以在一行写多个命令,命令间用分号隔开;结果如下:取消坐标轴名称设置gnuplotunsetxlabelgnuplotunsetylabel3、设置对数坐标设置为对数坐标setlogscale第4页Gnuplot简单使用设置x、y轴为对数坐标gnuplotsetlogscalexgnuplotsetlogscaley取消对数坐标unsetlogscale4、设置绘图标题gnuplotsettitle‘title’gnuplotplotsin(x)取消绘图标题设置unsettitle5、同时绘制多个函数gnuplotplotf1(x),f2(x),......fn(x),例如:gnuplotplotsin(x),x,结果:第5页Gnuplot简单使用6、为曲线设置标题gnuplotplotf(x)title'title'例如:gnuplotplotsin(x)title‘y=sin(x)’,xtitle‘y=x’结果:7、设置曲线标题的放置位置gnuplotsetkeyx,y其中x,y为横、纵坐标,例如:gnuplotsetkey8,-0.8gnuplotplot[-10:10][-1:1]sin(x)title'sin'将文本‘sin’放置在(8,-0.8)坐标处,结果:第6页Gnuplot简单使用将曲线标题放置到默认位置,使用命令:gnuplotsetkeydefault设置不显示曲线标题,使用名令unsetkey可设置绘图标题框gnuplotsetkeybox效果如下取消设置绘图标题框,使用命令setkeynobox8、添加网格gnuplotsetgrid;plotcos(x)取消网格,使用命令unsetgrid第7页Gnuplot简单使用三、设置输出1、输出成图片gnuplotsetterminal类型其中类型为图片的类型,如png、jpeg、gifgnuplotsetoutput‘文件名’设置输出文件名例如:gnuplotsetterminalgifgnuplotsetoutput‘sinx.gif’gnuplotplotsin(x)即会生成名为sinx.gif的图片设置图片的大小setsizem,nm,n为放大(缩小)倍数(相对于当前大小),如:setsize1.2,0.5将长设置为当前的1.2倍,宽设为当前的0.5倍2、设置回窗口输出(即默认状态)命令gnuplotsetterminalwindows可简写为setw3、其他也可设置输出为其他类型文件,如(ps、tex等);也可直接输出到打印机四、三维绘图命令splot用于三维绘图,如:gnuplotsplotx*y第8页Gnuplot简单使用五、运算符1、一元的运算符--a取反!!a逻辑反(a为0,则结果为1,若a为非0,结果为0)!a!阶乘$$3调用在‘using’中的列2、二元的运算符**a**b乘方,a的b次方*a*b乘,a乘b/a/b除,a除b%a%b取模,结果为a除b的余数+a+b加-a-b减==a==b判断等于,若a与b相等,则返回1,否则返回0!=a!=b判断不等,若a与b相等,则返回0,否则返回1ab判断小于=a=b小于或等于ab判断大于=a=b大于或等于&a&b按位与^a^b按位异或|a|b按位或&&a&&b逻辑与||a||b逻辑或3、三元的运算符?:a?b:c若a为真(1),则结果为b,否则结果为c举例:f(x)=x=0?-x:x定义一个分段函数发f(x),当x=0时,f(x)=-x;当x0时,f(x)=x;以此绘制一张图像gnuplotf(x)=x=0?-x:x;plotf(x)结果:第9页Gnuplot简单使用六、变量和函数1、变量在gnuplot中,变量一旦被赋值,它即存在了,如:gnuplota=1gnuplotb=’hello’命令showvariables将显示已存在的变量,此命令可简写为shv注意:变量名区分大小写2、函数1、内置函数Gnuplot内置有一些有用的函数数学库函数函数参数类型返回abs(x)anyx的绝对值|x|;abs(x)complexx的长度,sqrt(real(x)^2+imag(x)^2)acos(x)anycos(x)的反函数acosh(x)anycosh(x)的反函数arg(x)complexthephaseofxinradiansasin(x)anysin(x)的反函数第10页Gnuplot简单使用asinh(x)anysinh(x)的反函数atan(x)anytan(x)的反函数atan2(y,x)intorrealtan−1(y/x)(inversetangent)atanh(x)anytanh(x)的反函数besj0(x)radiansJ0Besselfunctionofxbesj1(x)radiansJ1Besselfunctionofxbesy0(x)radiansY0Besselfunctionofxbesy1(x)radiansY1Besselfunctionofxceil(x)any不小于x的最小整数cos(x)radians余弦cosh(x)radians双曲余弦erf(x)anyErf(real(x)),errorfunctionofreal(x)erfc(x)anyErfc(real(x)),1.0-errorfunctionofreal(x)exp(x)anye的x次方floor(x)any不大于x的最大整数gamma(x)anyGamma(real(x)),gammafunctionofreal(x)ibeta(p,q,x)anyIbeta(real(p,q,x)),ibetafunctionofreal(p,q,x)inverf(x)anyinverseerrorfunctionofreal(x)igamma(a,x)anyIgamma(real(a,x)),igammafunctionofreal(a,x)imag(x)complexx的虚部,返回一个实数invnorm(x)anyinversenormaldistributionfunctionofreal(x)int(x)real实数的整数部分,小数后面的部分被去除(非四舍五入)lambertw(x)realLambertWfunctionlgamma(x)anyLgamma(real(x)),lgammafunctionofreal(x)log(x)anyln(x),x的自然对数(基为e)log10(x)anylog(x),x的以十为基的对数norm(x)anynormaldistribution(Gaussian)functionofreal(x)rand(x)anyRand(real(x)),pseudorandomnumbergeneratorreal(x)anyx的实部sgn(x)any符号函数,x0返回1,x0返回-1,x=0返回0若x为复数,则x的虚部(imag(x))将被忽略sin(x)radiansx的正弦sinh(x)radiansx的双曲正弦sqrt(x)anyx的开方tan(x)radiansx的正切tanh(x)radiansx的双曲正切字符串函数gprintf(”format”,x)anystringresultfromapplyinggnuplot’sformatparsersprintf(”format”,x,...)multiplestringresultfromC-languagesprintf第11页Gnuplot简单使用strlen(”string”)stringintlengthofstringstrstrt(”string”,”key”)stringsintindexoffirstcharacterofsubstring”key”substr(”string”,beg,end)multiplestring”string”[beg:end]system(”command”)stringstringcontainingoutputstreamofshellcommandword(”string”,n)string,intreturnsthenthwordin”string”words(”string”)stringreturnsthenumberofwordsin”string”其他函数column(x)intcolumnxduringdatafilemanipulation.defined(X)variablename[DEPRECATED]returns1ifXisdefined,0otherwise.exists(”X”)”variablename”returns1ifavariablenamedXisdefined,0otherwise.stringcolumn(x)intcontentofcolumnxasastring.timecolumn(x)inttimecolumnxduringdatafilemanipulation.tm_hour(x)intthehourtm_mday(x)intthedayofthemonthtm_min(x)inttheminutetm_mon(x)intthemonthtm_sec(x)intthesecondtm_wday(x)intthedayoftheweektm_yday(x)intthedayoftheyeartm_year(x)inttheyearvalid(x)inttestvalidityofcolumn(x)duringdatafilemanip.第12页Gnuplot简单使用2、自定义函数在gnuplot中可直接用f(x)=expression来定义函数,expression为表达式,如:gnuplotf(x)=x*x;plotf(x)也可以定义二维函数,如:gnuplotp(x,y)=sin(x)*cos(y);splotp(x,y)命令showfunctions可显示已定义的函数,如:gnuplotshowfunctionsUser-DefinedFunctions:f(x)=x*xp(x,y)=sin(x)*cos(y)此命令也可简写为showfun或shfun或shfu或其他第13页Gnuplot简单使用七、文件绘图假设有文件file.dat,内容如下:100.7810.8570.963200.8911.0531.023300.9501.0371.025400.9840.9991.014501.0130.9981.018601.0001.0001.000使用命令gnuplotplot'file.dat'将自动使用第