为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

IDL等绘图命令对应关系一览表

2021-03-30 15页 doc 79KB 51阅读

用户头像 机构认证

夕夕资料

拥有专业强大的教研实力和完善的师资团队,专注为用户提供合同简历、论文写作、PPT设计、计划书、策划案、各类模板等,同时素材和资料部分来自网络,仅供参考.

举报
IDL等绘图命令对应关系一览表IDL、NCL、GRADS、MATLAB绘图命令对应关系一览表1.grads的数据文件与ncl的什么文件对应?grads只支持按照一定顺序存储的二进制数据文件,后缀名以.grd或者.dat或者.grb结束。这种数据必须以时间为最外层,然后每个变量按照向量形式存储,每个变量由外向内的存储顺序是高度(或等压面)==》纬度==》经度。这必须注意,否则画图容易出现一堆一堆的乱线条,这就说明你的数据没有按照grads的要求存储。再看看ncl,可以说ncl支持绝大多数各种数据的读写,包括netcdf,hdf,以及二进制数据甚至ASCII码...
IDL等绘图命令对应关系一览表
IDL、NCL、GRADS、MATLAB绘图命令对应关系一览1.grads的数据文件与ncl的什么文件对应?grads只支持按照一定顺序存储的二进制数据文件,后缀名以.grd或者.dat或者.grb结束。这种数据必须以时间为最外层,然后每个变量按照向量形式存储,每个变量由外向内的存储顺序是高度(或等压面)==》纬度==》经度。这必须注意,否则画图容易出现一堆一堆的乱线条,这就说明你的数据没有按照grads的要求存储。再看看ncl,可以说ncl支持绝大多数各种数据的读写,包括netcdf,hdf,以及二进制数据甚至ASCII码(如果说是十进制数据或许你会更熟悉),前两种数据一般都有头文件,不能用C语言或者Fortran读取,都需要插件才可以读取,ncl可以直接读取,matlab中也可以直接读取NETCDF格式(.nc)的数据。grads中可以读取按照说明存取的NC数据,这种数据必须又正确的时间说明,也就是说时间必须是真实的,有些模式模拟出来的数据grads的sdfopen命令是打不开的,因为一般模式都是nonleaprun,都是平年,没有设定闰年,造成了时间说明不真实,grads就会报错。那么grads'如何使用NC数据呢?所以建议使用ncl转换数据,将NC数据,hdf数据或者十进制数据转换成grd数据,供grads使用。这样说明是在是太空洞了,那么下面我举个例子吧。eg1)使用grads将netcdf数据转换成grd数据'reinit'var.1='air';var.2='hgt';var.3='uwnd'var.4='vwnd';var.5='omega';var.6='shum'j=6while(j<=6)'setfwrite/disk3/users/Rao_Jian/ERA-Interim-daily/entropy/'var.j'.daily.1979-2010.grd''setgxoutfwrite'i=1979while(i<=2010)'sdfopen/disk3/users/lbq/ERA-Interim-daily/pressure/'var.j'.interim.'i'.nc'tt=1if(i=1980|i=1984|i=1988|i=1992|i=1996|i=2000|i=2004|i=2008)while(tt<=366)'sett'ttzz=1while(zz<=37)'setx1240''sety1121''setz'zz'd'var.j''zz=zz+1endwhilett=tt+1endwhileelsewhile(tt<=365)'sett'ttzz=1zz=1while(zz<=37)'setx1240''sety1121''setz'zz'd'var.j''zz=zz+1endwhilett=tt+1endwhileendifi=i+1name='/disk3/users/lbq/ERA-Interim-daily/pressure/'var.j'.interim.'i'.nc''close1'endwhile'disablefwrite'j=j+1endwhileeg2)使用ncl将数据输出成二进制数据,grads可以使用(截取部分)patho        ="/disk3/users/Rao_Jian/Hadley/"system("rm"+patho+"ev_ts.grd")system("rm"+patho+"ev_ts2.grd")system("rm"+patho+"ev_ts.txt")system("rm"+patho+"ev_ts2.txt")dont=0,719fbindirwrite(patho+"ev_ts.grd",ev_ts(:,nt));写成二进制数据,供grads使用enddofbindirwrite(patho+"ev_ts2.grd",ev_ts(time|:,evn|:))asciiwrite(patho+"ev_ts.txt",ev_ts(time|:,evn|:));写成十进制数据,可以贴到EXCEL中使用asciiwrite(patho+"ev_ts2.txt",ev_ts);print(ev_ts(0,:))此外ncl中还有其他的读写函数,如fbinrecread,fbinrecwrite,fbinwrite,fbinreadncl读取netcdf3/4、hdf4、grib-1/2也是通过文件操作的eg3)ncl支持直接读取格式文件的读法fi          =addfile(pathi+"HadISST_sst.nc","r")sst0      =fi->sst(960:1679,:,:)    ;load50yeardataduringfrom1950to2009注意:这类文件的后缀名一般为.nc/.hdf/.grb/.hdfeos/.ccm2.grads中的描述文件与ncl中的什么对应描述文件(.ctl)是一个纯文本文件,我们有数据grads还是不能出图,需要一个描述文件来指定他的存储数据个数,维度(时间长度、层数和经纬度信息)。ncl是没有这种文件的,那么ncl在绘图时是通过什么信息来获得维度信息的呢?其实,在ncl里又一个概念叫做coordinate,其实就是维度信息。在ctl中,是通过xdef、ydef、zdef、tdef来声明数据的经纬度信息的。也就是说,在一个ctl文件中声明的所有数据,其相同维度的信息必须相同(维数可以不同)。那么我们还是举个例子好了eg4.1)ctl描述文件dset  /disk3/users/Rao_Jian/ERA-DATA/entropy/Var3D.grdundef-999titlemonthlyzonallymeanuwnd,vwnd,temperatureinTHETA-PVLATcoordinate optionsyrevxdef 1  linear0.0002.500ydef 200linear0.0000.75zdef 16  levels270280290300315330350370400450500550600650700750 tdef 389linearjan19791movars3ulat216-99meanszonalmeanuwindintheta-pvcoordinatevlat216-99meanszonalmeanvwindintheta-pvcoordinatetlat216-99meanszonalmeantemperatureintheta-pvcoordinateendvars;上面的例子中,声明了三个变量,每个变量都是16层,说明都是空间三维的(可以不是的,此时16改为0),黄色的信息是维度信息,也就是说这三个变量ulat2、vlat2、tlat2相同的经度、维度、层数、时间。你要说了,我的数据哪那么巧都是一样的维度,要是不一样怎么办?对不起,必须是相同维度的信息完全一样的数据才可以放到一个描述文件中,否则要分开在不同的文件中描述,这也就是为什么在一些使用者的批处理脚本中(.gs)中会打开多个文件的原因之一,因为变量的信息可能不同。eg4.2)ncl中维度声明形式举例;下面再来看看ncl中是如何声明维度信息的?dudP0!0="time"dudP0!1="lat"dudP0!2="lon"dudP0!3="level"dudP0&time=u&timedudP0&level=u&levelistdudP0&lat=u&latitudedudP0&lon=u&longitudecopy_VarCoords(dudP0,dvdP0)copy_VarCoords(dudP0,dPTdP0)在上面的例子中,!是用来给坐标维度命名的,&是用来引用某一维度数值的,copy_VarCoords是ncl的贡献函数库中的子程序,将一个变量的坐标信息原封不动的传给另一个变量。必须注意的是,绘制地图底图时,还要涉及到属性的概念,用@来引用或者声明。所以在给变量声明经纬度之名时,还要声明经纬度之属性,保证ncl能找到地图坐标,保证等值线或矢量与地图坐标对应,不发生错位。eg4.3)ncl中声明坐标经纬度属性pvlvl&lev  =lvl                ;isentropiclevels  pvlvl&lat  =u&latitude  pvlvl&lon  =u&longitude  pvlvl&lat@units  ="degrees_north"  pvlvl&lon@units  ="degrees_east"  pvlvl&lev@units  ="K"  pvlvl&time@units="monthssince1900-01-01"注意:pvlvl&lat@units  ="degrees_north"  @是接在pvlvl&lat后面的,也就是说,degrees_north属性是变量pvlvl的坐标lat的属性3.grads中的批处理命令文件与ncl中的什么对应这个不需要解释了吧,gs文件自然就相当与ncl脚本文件了,好好理解一下吧。说的更具体一点,是相当于ncl中graphics部分,因为ncl不仅具有绘图功能,还具有强大的计算功能,尤其是巨大的函数库。ncl的缺点是循环比较慢,优点就是有许多优化函数,不需要使用者自己编写子程序(如果你愿意,也可以自己编写,将脚本存在够得着的地方,用的时候load)。4.grads中的图形类型设置与ncl的图形接口csm函数对应说明grads图形类型设置'setgxoutgrahics-stylencl图形类型设置gsn_csm_choice[_choise[_choice[……]]]一般等值线图setgxoutcontour  gsn_csm_contour(无地图底图)gsn_csm_map_ce,之前都要设置cnLinesOn=True等值线+robinson投影(cylindricalequidistantmap)setgxoutcontoursetmprojrobinsongsn_csm_contour_map_ce等值线+极射赤面投影(PolarStereographicProjections)  setgxoutcontoursetmprojnps/spsgsn_csm_contour_map_polar(之前设置:gsnPolar(​http:​/​​/​www.ncl.ucar.edu​/​Document​/​Graphics​/​Resources​/​gsn.shtml"\l"gsnPolar"\t"_blank​) ="NH"/gsnPolar(​http:​/​​/​www.ncl.ucar.edu​/​Document​/​Graphics​/​Resources​/​gsn.shtml"\l"gsnPolar"\t"_blank​) ="SH")填色等值线图setgxoutshadedgsn_csm_contour,之前设置gsn_define_colormap(wks,colors),cnFillOn=True填色等值线+等值线setgxoutshaded d..setgxoutcontourd..注意:顺序不能反同上,之前设置cnFillOn=True,cnLinesOn=True仅仅标记网格点setgxoutgrid比较灵活,可以使用gsn_add_test做到,没有对应的csm接口,参照http://www.ncl.ucar.edu/Applications/Scripts/station_3.ncl(​http:​/​​/​www.ncl.ucar.edu​/​Applications​/​Scripts​/​station_3.ncl"\t"_blank​)矢量图setgxoutvectorgsn_vector流线图setgxoutstreaminegsn_streamline一维数据图setgxoutbar/line/linefillgsn_xy与各种属性联合使用达到目的,其中line是最简单的。单线line图setgxoutlinegsn_xy直方图setgxoutbargsn_xy,之前设置gsnScale=True(效果见图1),还可以使用gsn_histogram来统计一组数据的分布情况,分别落在什么区间,也就是说x轴是数值,y轴是发生频率或次数(有点概率密度的意思)(效果见图2)两单线着色图setgxoutlinefill(效果见图3)gsn_xy,之前设置属性(效果见图4)二维场方格子填充图setgxoutfgrid同等值线图画法,设置相应的属性误差盒子图setgxouterrbargsn_xy与相应属性联合使用达到目的5.grads与ncl的函数对应关系说明grads函数ncl函数平均函数ave(var,t/lon/lat=?,t/lon/lat=?,inc,flag),求平均avg,dim_avg,dim_avg_n,dim_avg_n_Wrap, dim_avg_Wrap纬向平均ave(var,x=x1,x=x2)同上时间平均ave(var,t=t1,t=t2,dt)同上,外加clmMonLLLT,clmMonLLT,clmMonTLLclmMonTLLL高度权重平均vint(ps,exp,top)dim_avg_wgt,dim_avg_wgt_n,dim_avg_wgt_n_Wrapdim_avg_wgt_Wrap区域面积平均aave(u,x1=x,x=x2,y=y1,y=y2)同上,注意一下参数的设定技巧,还可以直接使用:wgt_areaave,wgt_areaave2,wgt_areaave_Wrap垂直涡度hcurl(u,v)uv2vr_cfd,uv2vrF,uv2vrf,uv2vrF_Wrapuv2vrG,uv2vrg,uv2vrG_Wrap水平散度hdivg(u,v)uv2dv_cfd,uv2dvF,uv2dvf,uv2dvF_Wrapuv2dvG,uv2dvg,uv2dvG_Wrap取样稀疏化skip(u,dx,dy)没有函数,可以直接引用u(...,::dx,::dy)差分函数cdiff(u),为中央差分函数center_finite_diff,center_finite_diff_n九点滑动平均smth9(u)smath9,smath9_Wrap三角函数sin,cos,tansin,cos,tan,此外还有反三角函数atan,acos,asin不记得Pi=3.141592653的人一般这样表示之,pi=atan(1.0)*4,经常可以在ncl脚本中看得到对数指数函数exp,log,log10exp,log求和sumgsum,dim_sum,dim_sum_n,dim_sum_n_Wrapdim_sum__Wrap权重求和sum与权重平均一致,avg对应sum就好了IDL绘图通用参数(和Fortran语言类似,变量名关键字不区分大小写,字符串内部区分大小写)。position 定位图形位置大小,格式position=[x0,y0,x1,y1],(x0,y0)是左下角坐标,(x1,y1)是右上角坐标。0~1之间。title      图名,格式title='Graphicname'(单引号和双引号通用,又和Fortran一样,ncl绝对不可以)subtitle  副标题名,格式subtitle='Graphicname2'charsize  字符大小(默认值1.0),格式charsize=2.0(放大了喔)charthick 字符粗细或厚度,格式charthick=2.0(默认值1.0,此处加粗了喔)font       字符的字体索引号(-1,0或者1)希腊字母可以通过latex语法输入,和matlab一样color      颜色索引号linestyle   线型ticklen    刻度尺度(默认值0.02)thick     线宽(默认值1.0)psym    符号代码(见下文散点图介绍) symsize  符号大小(默认值1.0)/[xyz]log 坐标是否取对数,默认值是线型/noeraze 与matlab的holdon有的一拼,和grads的clear作用相反/nodata  不做图,数据从图中隐藏,只显示轴/noclip  不裁剪一般轴的性质设置[xyz]range   轴范围(默认值:自动)[xyz]title      标题字符(默认值:无)[xyz]charsize  字符大小(默认值:1.0)[xyz]style   轴类型(默认值:0;可取数值0~31)          这个要细说一下1:由xrange和yrange指定范围                          2:在轴范围的每一边留有空余                          4:不显示整个坐标轴                          8:只在左边或者下边显示坐标轴                          16:不将y轴的起始值强行规定为0[xyz]margin     轴边缘空白,单位是字符间隔(默认值:xmargin=[10,3],ymargin=[4,2])[xyz]minor    最小刻度间的数目[xyz]thicklen  刻度长度(默认值:0.02)[xyz]gridstyle   标注方格的线型(0~5,0为默认值)[xyz]tickformat 刻度格式[xyz]ticks       主要刻度间的数目[xyz]tickv       要标注的刻度数组[xyz]tickname  刻度标注数组/ynozero       y刻度不从0开始 1.1-D单线图  1)IDL单线图:    PLOT,[X,] Y [,/ISOTROPIC][,MAX_VALUE=value][,MIN_VALUE=value][,NSUM=value][,/POLAR][,THICK=value][,/XLOG][,/YLOG][,/YNOZERO][,BACKGROUND=color_index][,CHARSIZE=value][,CHARTHICK=integer][,CLIP=[X0, Y0, X1, Y1]][,COLOR=value][,/DATA|,/DEVICE|,/NORMAL][,FONT=integer][,LINESTYLE={0|1|2|3|4|5}][,/NOCLIP][,/NODATA][,/NOERASE][,POSITION=[X0, Y0, X1, Y1]][,PSYM=integer{0to10}][,SUBTITLE=string][,SYMSIZE=value][,/T3D][,THICK=value][,TICKLEN=value][,TITLE=string] [,{X|Y|Z}CHARSIZE=value] [,{X|Y|Z}GRIDSTYLE=integer{0to5}] [,{X|Y|Z}MARGIN=[left, right]] [,{X|Y|Z}MINOR=integer] [,{X|Y|Z}RANGE=[min, max]] [,{X|Y|Z}STYLE=value] [,{X|Y|Z}THICK=value] [,{X|Y|Z}TICK_GET=variable] [,{X|Y|Z}TICKFORMAT=string] [,{X|Y|Z}TICKINTERVAL= value] [,{X|Y|Z}TICKLAYOUT=scalar][,{X|Y|Z}TICKLEN=value] [,{X|Y|Z}TICKNAME=string_array] [,{X|Y|Z}TICKS=integer] [,{X|Y|Z}TICKUNITS=string][,{X|Y|Z}TICKV=array] [,{X|Y|Z}TITLE=string] [,ZVALUE=value{0to1}]其中[]为可选项,称作关键字,这是IDL过程中的一个设置(IDL程序包括过程和函数,过程pro相当于FORTRAN的子程序,自定义函数就不必多说了吧。以上关键字都具有单词本身的实际意义。比如,选择了plot,x,y横坐标自然由x数组决定,否则的话,横坐标从0开始,以size(y)-1结束。再比如,选择了/ISOTROPIC的话,x和y方向的比例就会一致,这在画绘制剖面图时是很危险的,因为垂直尺度一般比水平尺度小很多,所以此项要慎重选择。再例如,若希望y轴以log的数值标注,此时打开开关/ylog。还有就是IDL和matlab在绘制极坐标单线时很方便的,对于IDL而言,选择激活/POLAR,而matlab有单独的函数处理极坐标单线。plot的很多参数都是上面介绍的通用参数。  2)NCL单线图  gsn_xy   gsn_y  3)grads单线图  setgxoutline  4)MATLAB单线图  plot(Y)  plot(X1,Y1,...,Xn,Yn)  plot(X1,Y1,LineSpec,...,Xn,Yn,LineSpec)  plot(...,'PropertyName',PropertyValue,...)2.重叠图  1)IDL重叠图  OPLOT,[X,] Y [,MAX_VALUE=value][,MIN_VALUE=value][,NSUM=value][,/POLAR][,THICK=value[,CLIP=[X0, Y0,X1, Y1]][,COLOR=value][,LINESTYLE={0|1|2|3|4|5}][,/NOCLIP][,PSYM=integer{0to10}][,SYMSIZE=value][,/T3D][,ZVALUE=value{0to1}]使用这个是前面已经使用plot,虽然叠加其他曲线,常用来绘制两组或多组时间序列,比较趋势走向、转折点、突变点等  2)NCL重叠图    先将多组时间序列写在一个二维数组中,直接绘制单线图,就会出多组曲线,还可以配置上相应的属性,这样以来各条曲线可以不同的颜色、线型、粗细显示,使得数据的可读性更强    等值线矢量图上色图使用overlay叠加。    还有提供特殊的叠加图  gsn_csm_pres_hgt_vector  gsn_csm_vector_scalar_map_ce   gsn_csm_vector_scalar_map_polar  3)grads单线图    只要不清屏,单线会一直叠加下去。  4)MATLAB单线重叠图    plotyy(x1,y1,x2,y2)  这个函数出图会有两个y轴,一个在左边,一个在右边。EXCEL也具有这个功能。重叠图还可以叠加画,键入holdon后,重复使用plot也可以达到目的。但是使用hold叠置的图形线型和颜色比较单调,而plotyy还是以不同颜色显示的,比较爽。3.散点图  1)IDL散点图  plot,x,y,psym=1  psym属于参数,注意和关键字的区别(关键字是开关,打开了就是True,否则就是False;而参数就不同了,可以设置很多数值)。psym参数可以取0——8九个数(0:无,1:+,2:-,3:*,4:.;5:<>(菱形);6:方块,7:叉号;8:自定义)  2)NCL散点图  gsn_xy加上相应的属性  3)grads散点图  setgxoutline  setccolor1  *(白色,看不到;或者0,黑色,在黑色背景下看不见,比较灵活喔)  setcmarkmarker  *(marker取值0——5)  4)matlab散点图  一言以蔽之,简单的一笔  plot(x,y,'.')或者plot(x,y,'*')  也可以和句柄一起使用,这只线型散点样式,举个例子吧:  plot(x,y,'--rs','LineWidth',2,...          'MarkerEdgeColor','k',...          'MarkerFaceColor','g',...          'MarkerSize',10)4.极线图  1)IDL极线图    plot,r,t,/polar  2)MATLAB极线图    polar(theta,rho)5.等值线图  1)IDL等值线图  CONTOUR, Z [, X, Y][,C_ANNOTATION=vector_of_strings][,C_CHARSIZE=value][,C_CHARTHICK=integer][,C_COLORS=vector][,C_LABELS=vector{eachelement0or1}][,C_LINESTYLE=vector][,C_ORIENTATION=degrees][,C_SPACING=value][,C_THICK=vector][,/CELL_FILL|,/FILL][,/CLOSED][,/DOWNHILL][,/FOLLOW][,/IRREGULAR][,/ISOTROPIC][,LEVELS=vector][,NLEVELS=integer{1to60}][,MAX_VALUE=value][,MIN_VALUE=value][,/OVERPLOT][{,/PATH_DATA_COORDS,PATH_FILENAME=string,PATH_INFO=variable,PATH_XY=variable}|,TRIANGULATION=variable][,/PATH_DOUBLE][,/XLOG][,/YLOG][,ZAXIS={0|1|2|3|4}]在这个过程中参数和关键子是很多的,下面大致介绍一下一些主要参数的主要用法levels    设置等值线级别c_labels 与levels配合使用,决定是否标注等值线的数值          例如c_labels=[1,0,1,0,....]这就是隔一条标注一个,1代表标注,0代表不标注position,title,[xyz]title等通用参数c_charsize 等值线标注大小c_charthick 字符粗细或者厚度c_annotation 字符串数组标注等值线,代替等值线数值c_colors      颜色数组c_linestyle    线型数组min_value    相当于grads的setcminminmax_value  相当于grads的setcmaxmax下线面是常用的关键词选项/overplot     如果前面已经有图,此处相当于ncl的overlay              相当于matlab的holdon,相当与grads的什么也不做(未使用clear(c),连续使用dispay(d)/irregular    不规则数据输入,适合用于台站资料(​http:​/​​/​www.06climate.com​/​"\t"_blank​)处理/fill           相当于ncl的cnFillOn=True,或者grads的setgxoutshaded/cell_fill       单元格填充,grads中也有此功能setgxoutfgrid,与setfgvalsVarncoln(多次设置)  2)NCL等值线图  gsn_csm_contour  gsn_csm_lat_time  gsn_csm_pre_hgt  gsn_csm_map_ce  gsn_csm_contour_map_ce  gsn_csm_contour_map_polar  3)grads等值线图  setgxoutcontour  4)MATLAB等值线图  contour(Z)  contour(Z,n)  contour(Z,v)  contour(X,Y,Z)  contour(X,Y,Z,n)  contour(X,Y,Z,v)  contour(...,LineSpec)  contour(axes_handle,...)  [C,h]=contour(...)  和句柄联合使用效果更佳6.二维矢量图  1)IDL二维矢量图  VELOVECT, U, V [, X, Y][,COLOR=index][,MISSING=value [,/DOTS]][,LENGTH=value][,/OVERPLOT]所有plot的关键词都接受。  2)NCL二维矢量图  gsn_csm_vector  gsn_csm_vector_map  gsn_csm_vector_map_ce  gsn_csm_vector_map_polar  gsn_csm_sreamline_map_polar  gsn_csm_vector_map_ce  gsn_csm_vector_streamline_ce  3)grads矢量图  setgxoutvector/stream/barb  4)MATLAB矢量图  quiver(x,y,u,v)  quiver(u,v)  quiver(...,scale)  quiver(...,LineSpec)  quiver(...,LineSpec,'filled')  quiver(...,'PropertyName',PropertyValue,...)  quiver(axes_handle,...)(注:可编辑下载,若有不当之处,请指正,谢谢!)推荐精选推荐精选推荐精选
/
本文档为【IDL等绘图命令对应关系一览表】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索