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命令是打不开的,因为一般模式都是nonleap run,都是平年,没有设定闰年,造成了时间说明不真实,grads就会报错。那么grads'如何使用NC数据呢?所以建议使用ncl转换数据,将NC数据,
grads只支持按照一定顺序存储的二进制数据文件,后缀名以.grd或者.dat或者.grb结束。这种数据必须以时间为最外层,然后每个变量按照向量形式存储,每个变量由外向内的存储顺序是高度(或等压面)==》纬度==》经度。这必须注意,否则画图容易出现一堆一堆的乱线条,这就说明你的数据没有按照grads的要求存储。
再看看ncl,可以说ncl支持绝大多数各种数据的读写,包括netcdf,hdf,以及二进制数据甚至ASCII码(如果说是十进制数据或许你会更熟悉),前两种数据一般都有头文件,不能用C语言或者Fortran读取,都需要插件才可以读取,ncl可以直接读取,matlab中也可以直接读取NETCDF格式(.nc)的数据。grads中可以读取按照说明存取的NC数据,这种数据必须又正确的时间说明,也就是说时间必须是真实的,有些模式模拟出来的数据grads的sdfopen命令是打不开的,因为一般模式都是nonleap run,都是平年,没有设定闰年,造成了时间说明不真实,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=6
while (j<=6)
'set fwrite/disk3/users/Rao_Jian/ERA-Interim-daily/entropy/'var.j'.d'
'set gxout fwrite'
i=1979
while (i<=2010)
'sdfopen/disk3/users/lbq/ERA-Interim-daily/pressure/'var.j'.interim.'i'.nc'
tt=1
if(i=1980|i=1984|i=1988|i=1992|i=1996|i=2000|i=2004|i=2008)
这样说明是在是太空洞了,那么下面我举个例子吧。
eg1) 使用grads将netcdf数据转换成grd数据
'reinit'
var.1='air';var.2='hgt';var.3='uwnd'
var.4='vwnd';var.5='omega';var.6='shum'
j=6
while (j<=6)
'set fwrite/disk3/users/Rao_Jian/ERA-Interim-daily/entropy/'var.j'.d'
'set gxout fwrite'
i=1979
while (i<=2010)
'sdfopen/disk3/users/lbq/ERA-Interim-daily/pressure/'var.j'.interim.'i'.nc'
tt=1
if(i=1980|i=1984|i=1988|i=1992|i=1996|i=2000|i=2004|i=2008)
while (tt<=366)
'set t 'tt
zz=1
while (zz<=37)
'set x 1 240'
'set y 1 121'
'set z 'zz
'd 'var.j''
zz=zz+1
endwhile
tt=tt+1
endwhile
else
while (tt<=365)
'set t 'tt
'set t 'tt
zz=1
while (zz<=37)
'set x 1 240'
'set y 1 121'
'set z 'zz
'd 'var.j''
zz=zz+1
endwhile
tt=tt+1
endwhile
else
while (tt<=365)
'set t 'tt
zz=1
zz=1
while (zz<=37)
'set x 1 240'
'set y 1 121'
'set z 'zz
'd 'var.j''
zz=zz+1
endwhile
tt=tt+1
endwhile
endif
i=i+1
name='/disk3/users/lbq/ERA-Interim-daily/pressure/'var.j'.interim.'i'.nc'
zz=1
while (zz<=37)
'set x 1 240'
'set y 1 121'
'set z 'zz
'd 'var.j''
zz=zz+1
endwhile
tt=tt+1
endwhile
endif
i=i+1
name='/disk3/users/lbq/ERA-Interim-daily/pressure/'var.j'.interim.'i'.nc'
'close 1'
endwhile
'disable fwrite'
j=j+1
endwhile
eg2)使用ncl将数据输出成二进制数据,grads可以使用(截取部分)
patho = "/disk3/users/Rao_Jian/Hadley/"
system("rm "+patho+"d")
system("rm "+patho+"d")
system("rm "+patho+"")
system("rm"+patho+"")
do nt=0,719
fbindirwrite(patho+"d",ev_ts(:,nt));写成二进制数据,供grads使用
end do
endwhile
'disable fwrite'
j=j+1
endwhile
eg2)使用ncl将数据输出成二进制数据,grads可以使用(截取部分)
patho = "/disk3/users/Rao_Jian/Hadley/"
system("rm "+patho+"d")
system("rm "+patho+"d")
system("rm "+patho+"")
system("rm"+patho+"")
do nt=0,719
fbindirwrite(patho+"d",ev_ts(:,nt));写成二进制数据,供grads使用
end do
fbindirwrite(patho+"d",ev_ts(time|:,evn|:))
asciiwrite(patho+"",ev_ts(time|:,evn|:));写成十进制数据,可以贴到EXCEL中使用
asciiwrite(patho+"",ev_ts)
;print(ev_ts(0,:))
此外ncl中还有其他的读写函数,如
fbinrecread,fbinrecwrite,fbinwrite,fbinread
ncl读取netcdf3/4、hdf4、grib-1/2也是通过文件操作的
eg3)ncl支持直接读取格式文件的读法
fi = addfile(pathi+"","r")
sst0 =fi->sst(960:1679,:,:) ; load 50 year data duringfrom 1950 to 2009
注意:这类文件的后缀名一般为.nc /.hdf/ .grb/.hdfeos/.ccm
2.grads中的描述文件与ncl中的什么对应
asciiwrite(patho+"",ev_ts(time|:,evn|:));写成十进制数据,可以贴到EXCEL中使用
asciiwrite(patho+"",ev_ts)
;print(ev_ts(0,:))
此外ncl中还有其他的读写函数,如
fbinrecread,fbinrecwrite,fbinwrite,fbinread
ncl读取netcdf3/4、hdf4、grib-1/2也是通过文件操作的
eg3)ncl支持直接读取格式文件的读法
fi = addfile(pathi+"","r")
sst0 =fi->sst(960:1679,:,:) ; load 50 year data duringfrom 1950 to 2009
注意:这类文件的后缀名一般为.nc /.hdf/ .grb/.hdfeos/.ccm
2.grads中的描述文件与ncl中的什么对应
描述文件(.ctl)是一个纯文本文件,我们有数据grads还是不能出图,需要一个描述文件来指定他的存储数据个数,维度(时间长度、层数和经纬度信息)。ncl是没有这种文件的,那么ncl在绘图时是通过什么信息来获得维度信息的呢?
其实,在ncl里又一个概念叫做coordinate,其实就是维度信息。在ctl中,是通过xdef、ydef、zdef、tdef来声明数据的经纬度信息的。也就是说,在一个ctl文件中声明的所有数据,其相同维度的信息必须相同(维数可以不同)。那么我们还是举个例子好了
eg4.1)ctl描述文件
dset /disk3/users/Rao_Jian/ERA-DATA/d
undef -999
title monthly zonally mean uwnd,vwnd,temperaturein THETA-PVLAT coordinate
options yrev
xdef 1 linear 0.000 2.500
ydef 200 linear 0.000 0.75
zdef 16 levels 270 280 290 300 315 330 350 370 400 450 500 550 600650 700 750
tdef 389 linear jan1979 1mo
其实,在ncl里又一个概念叫做coordinate,其实就是维度信息。在ctl中,是通过xdef、ydef、zdef、tdef来声明数据的经纬度信息的。也就是说,在一个ctl文件中声明的所有数据,其相同维度的信息必须相同(维数可以不同)。那么我们还是举个例子好了
eg4.1)ctl描述文件
dset /disk3/users/Rao_Jian/ERA-DATA/d
undef -999
title monthly zonally mean uwnd,vwnd,temperaturein THETA-PVLAT coordinate
options yrev
xdef 1 linear 0.000 2.500
ydef 200 linear 0.000 0.75
zdef 16 levels 270 280 290 300 315 330 350 370 400 450 500 550 600650 700 750
tdef 389 linear jan1979 1mo
vars 3
ulat2 16 -99 means zonal mean u wind in theta-pvcoordinate
vlat2 16 -99 means zonal mean v wind in theta-pvcoordinate
tlat2 16 -99 means zonal mean temperature intheta-pv coordinate
endvars
;
上面的例子中,声明了三个变量,每个变量都是16层,说明都是空间三维的(可以不是的,此时16改为0),黄的信息是维度信息,也就是说这三个变量ulat2、vlat2、tlat2相同的经度、维度、层数、时间。你要说了,我的数据哪那么巧都是一样的维度,要是不一样怎么办?
对不起,必须是相同维度的信息完全一样的数据才可以放到一个描述文件中,否则要分开在不同的文件中描述,这也就是为什么在一些使用者的批处理脚本中(.gs)中会打开多个文件的原因之一,因为变量的信息可能不同。
eg4.2)ncl中维度声明形式举例
;
ulat2 16 -99 means zonal mean u wind in theta-pvcoordinate
vlat2 16 -99 means zonal mean v wind in theta-pvcoordinate
tlat2 16 -99 means zonal mean temperature intheta-pv coordinate
endvars
;
上面的例子中,声明了三个变量,每个变量都是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&time
dudP0&level=u&levelist
dudP0&lat=u&latitude
dudP0&lon=u&longitude
copy_VarCoords(dudP0,dvdP0)
copy_VarCoords(dudP0,dPTdP0)
在上面的例子中,!是用来给坐标维度命名的,&是用来引用某一维度数值的,copy_VarCoords是ncl的贡献函数库中的子程序,将一个变量的坐标信息原封不动的传给另一个变量。
dudP0!0="time"
dudP0!1="lat"
dudP0!2="lon"
dudP0!3="level"
dudP0&time=u&time
dudP0&level=u&levelist
dudP0&lat=u&latitude
dudP0&lon=u&longitude
copy_VarCoords(dudP0,dvdP0)
copy_VarCoords(dudP0,dPTdP0)
在上面的例子中,!是用来给坐标维度命名的,&是用来引用某一维度数值的,copy_VarCoords是ncl的贡献函数库中的子程序,将一个变量的坐标信息原封不动的传给另一个变量。
必须注意的是,绘制地图底图时,还要涉及到属性的概念,用@来引用或者声明。所以在给变量声明经纬度之名时,还要声明经纬度之属性,保证ncl能到地图坐标,保证等值线或矢量与地图坐标对应,不发生错位。
eg4.3)ncl中声明坐标经纬度属性
pvlvl&lev = lvl ; isentropic levels
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 = "monthssince 1900-01-01"
注意: pvlvl&lat@units = "degrees_north" @是接在pvlvl&lat后面的,也就是说,degrees_north属性是变量pvlvl的坐标lat的属性
3.grads中的批处理命令文件与ncl中的什么对应
eg4.3)ncl中声明坐标经纬度属性
pvlvl&lev = lvl ; isentropic levels
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 = "monthssince 1900-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函数对应
| ||||||||||||||||||||||||||||||||||||||||||||||||
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, clmMonTLL clmMonTLLL |
高度权重平均 | vint(ps,exp,top) | dim_avg_wgt, dim_avg_wgt_n, dim_avg_wgt_n_Wrap dim_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_Wrap uv2vrG, uv2vrg, uv2vrG_Wrap |
水平散度 | hdivg(u,v) | uv2dv_cfd, uv2dvF, uv2dvf, uv2dvF_Wrap uv2dvG, 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,tan | sin,cos,tan,此外还有反三角函数atan,acos,asin不记得 Pi=3.141592653的人一般这样表示之,pi=atan(1.0)*4, 经常可以在ncl脚本中看得到 |
对数指数函数 | exp, log, log10 | exp, log |
求和 | sumg | sum , dim_sum, dim_sum_n, dim_sum_n_Wrap dim_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='Graphic name2'
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)
/
title 图名,格式title='Graphicname'(单引号和双引号通用,又和Fortran一样,ncl绝对不可以)
subtitle 副标题名,格式subtitle='Graphic name2'
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的hold on有的一拼,和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])
/noeraze 与matlab的hold on有的一拼,和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]
[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{0to 10}] [, SUBTITLE=string] [, SYMSIZE=value] [, /T3D] [, THICK=value][, TICKLEN=value] [, TITLE=string]
[, {X | Y | Z}CHARSIZE=value]
[, {X | Y | Z}GRIDSTYLE=integer{0 to 5}]
[, {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}CHARSIZE=value]
[, {X | Y | Z}GRIDSTYLE=integer{0 to 5}]
[, {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{0 to 1}]
[, {X | Y | Z}TICKUNITS=string]
[, {X | Y | Z}TICKV=array]
[, {X | Y | Z}TITLE=string]
[, ZVALUE=value{0 to 1}]
其中curl是什么命令[]为可选项,称作关键字,这是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
2) NCL单线图
gsn_xy gsn_y
3) grads单线图
set gxout line
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{0 to 10}] [, SYMSIZE=value] [, /T3D] [, ZVALUE=value{0to 1}]
使用这个是前面已经使用plot,虽然叠加其他曲线,常用来绘制两组或多组时间序列,比较趋势走向、转折点、突变点等
set gxout line
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{0 to 10}] [, SYMSIZE=value] [, /T3D] [, ZVALUE=value{0to 1}]
使用这个是前面已经使用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也具有这个功能。重叠图还可以叠加画,键入hold on后,重复使用plot也可以达到目的。但是使用hold叠置的图
先将多组时间序列写在一个二维数组中,直接绘制单线图,就会出多组曲线,还可以配置上相应的属性,这样以来各条曲线可以不同的颜、线型、粗细显示,使得数据的可读性更强
等值线矢量图上图使用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也具有这个功能。重叠图还可以叠加画,键入hold on后,重复使用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散点图
set gxout line
set ccolor 1 *(白,看不到;或者0,黑,在黑背景下看不见,比较灵活喔)
set cmark marker *(marker 取值0——5)
4) matlab散点图
一言以蔽之,简单的一笔
plot(x,y,'.')或者plot(x,y,'*')
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散点图
set gxout line
set ccolor 1 *(白,看不到;或者0,黑,在黑背景下看不见,比较灵活喔)
set cmark marker *(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{eachelement 0 or 1}] [, C_LINESTYLE=vector] [, C_ORIENTATION=degrees][, C_SPACING=value] [, C_TH
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{eachelement 0 or 1}] [, C_LINESTYLE=vector] [, C_ORIENTATION=degrees][, C_SPACING=value] [, C_TH
ICK=vector] [, /CELL_FILL | , /FILL][, /CLOSED] [, /DOWNHILL] [, /FOLLOW] [, /IRREGULAR] [, /ISOTROPIC] [, LEVELS=vector][, NLEVELS=integer{1 to 60}] [, 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 颜数组
在这个过程中参数和关键子是很多的,下面大致介绍一下一些主要参数的主要用法
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的set cmin min
max_value 相当于grads的set cmax max
下线面是常用的关键词选项
/overplot 如果前面已经有图,此处相当于ncl的overlay
相当于matlab的hold on, 相当与grads的什么也不做(未使用clear(c),连续使用dispay(d)
/irregular 不规则数据输入,适合用于台站资料处理
/fill 相当于ncl的cnFillOn = True,或者grads的setgxout shaded
/cell_fill 单元格填充,grads中也有此功能setgxout fgrid,与set fgvals Varn coln(多次设置)
2) NCL等值线图
gsn_csm_contour
gsn_csm_lat_time
gsn_csm_pre_hgt
min_value 相当于grads的set cmin min
max_value 相当于grads的set cmax max
下线面是常用的关键词选项
/overplot 如果前面已经有图,此处相当于ncl的overlay
相当于matlab的hold on, 相当与grads的什么也不做(未使用clear(c),连续使用dispay(d)
/irregular 不规则数据输入,适合用于台站资料处理
/fill 相当于ncl的cnFillOn = True,或者grads的setgxout shaded
/cell_fill 单元格填充,grads中也有此功能setgxout fgrid,与set fgvals Varn coln(多次设置)
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等值线图
set gxout contour
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(...)
gsn_csm_contour_map_ce
gsn_csm_ contour_map_polar
3) grads等值线图
set gxout contour
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矢量图
set gxout vector/stream/barb
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矢量图
set gxout vector/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,...)
quiver(x,y,u,v)
quiver(u,v)
quiver(...,scale)
quiver(...,LineSpec)
quiver(...,LineSpec,'filled')
quiver(...,'PropertyName',PropertyValue,...)
quiver(axes_handle,...)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论