NCL符号说明.docx

上传人:b****4 文档编号:24103765 上传时间:2023-05-24 格式:DOCX 页数:18 大小:27.18KB
下载 相关 举报
NCL符号说明.docx_第1页
第1页 / 共18页
NCL符号说明.docx_第2页
第2页 / 共18页
NCL符号说明.docx_第3页
第3页 / 共18页
NCL符号说明.docx_第4页
第4页 / 共18页
NCL符号说明.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

NCL符号说明.docx

《NCL符号说明.docx》由会员分享,可在线阅读,更多相关《NCL符号说明.docx(18页珍藏版)》请在冰豆网上搜索。

NCL符号说明.docx

NCL符号说明

一、概述

一般,NCL脚本包含以下的内容:

1、使用load命令加载包含高水平图形接口的库函数,这一步在begin之前进行。

2、从数据文件中读数据。

进行数据处理(可选)。

3、打开一个工作站(workstation)。

选择一个颜色表.

4、创建一个resouce变量,各种画图的选项将作为它的属性。

5、调用合适的图形接口作图。

load"$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"

load"$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

begin

in=addfile(“myfile.nc,“r“)

t=in->Twks=gsn_open_wks(“ps,ce)

gsn_define_colormap(wks,"BlAqGrYeOrRe")

res=True

res@cnFillOn=True

res@cnLinesOn=False

res@cnLevelSpacingF=0.5

res@gsnSpreadColors=True

res@lbAutoLabelStride=True

plot=gsn_csm_contour_map_ce(wks,t,res)

end

二、高水平图形接口

2.1gsn图形接口

一般的gsn接口可以创建一般的x-y坐标,等高线,流线和矢量图。

2.2gsn_csm接口

–可以自动的完成以下功能:

自动添加labelbars,在一般的接口中需要明确的指明。

自动的将变来的long_name和units属性作为图形的标签。

long_name在左上角,units在右上角。

还会自动的添加一些关于压力值等的其它标签。

2.3加载接口

在begin之前用load命令加载。

gsn和gsn_csm图形接口包含在以下两个文件里。

load"$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"

load"$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

三、GettingStarted

3.2.hluresfile

–.hluresfile文件要位于主目录下。

–在.hluresfile文件里你可以设置你的显示属性:

例如:

前景色、背景色:

*wkForegroundColor:

(/0.,0.,0./)*wkBackgroundColor:

(/1.,1.,1./)

–Colormap

*wkColorMap:

rainbow+gray

–字体:

–*Font:

helvetica

四、工作站(workstation)

在画图之前必须要先创建一个工作站。

图形命令将作用在工作站上。

工作站需要赋予一个名字,这个名字将作为输出文件的文件名。

你可以同时打开多个工作站。

一个工作站只可以指定一个colormap。

六种工作站:

–1、ncgm。

2、ps(postscript)。

3、eps(密封的postscript)。

4、epsi(带位图预览的密封的postscript)。

5、pdf。

6、X11窗口。

–例:

wks=gsn_open_wks(“pdf,34_x_45)wks_2=gsn_open_wks(“ps,myfile)

五、通过Resource画图

通过Resources我们可以修改默认的NCL图形。

每个resource属性的前两个小写字母代表了resource的类别,后面的单词首字母大写。

5.1Resource类别

am:

注释管理cn:

等高线ca:

坐标数组gs:

图像风格lb:

labelbarlg:

说明

mp:

maps(地图)pm:

plotmanager(绘图管理)pr:

primitive(原型)sf:

scalarfield(标量场)ti:

title(标题)tm:

tickmarks(刻度标记)tx:

text(文本)tr:

transform(变换)vf:

vectorfield(矢量场)field()vc:

vectors(向量)vp:

viewport(显示窗口)wk:

workstation(工作站)ws:

workspace(工作空间)xy:

xyplot(xy坐标图形)它们的详细属性请参见:

http:

//www.ncl.ucar.edu/Document/Graphics/Resources/

5.2给resources赋值

首先要将resources变量赋值为True。

属性通过@符号来指定。

下例中的res是用户自定义的。

例:

res=Trueres@tiMainString=“mytitleres@cnFillOn=True

resource变量通常作为调用的图形接口的最后一个参数:

例:

plot=gsn_csm_contour(wks,data,res)plot2=gsn_xy(wks,data,res)

5.3一些常用的resources

附录A包含了常用的resource的完整的描述

5.4画图和gsnDrawresource

–默认情况下,当你调用高水平图形接口时,图形会被自动创建,除非你设定:

gsnDraw=False.

5.5推进frame和gsnFrameresource

–默认情况下,当你调用高水平图形接口,图形被创建后,图形接口会自动推进frame(如果一frame(个frame是书的一页的话,那么workstation就是那本书,推进frame就相当于翻过书的一页。

一个workstation可以有多个frame)。

除非你设定:

gsnFrame=False

5.6特殊的字符串resources,gsnLeftString,gsnCenterString,gsnRightString

在gsn_csm图形接口中,图形左上角会自动设置为数据的long_name属性,右上角会自动设置为数据的units属性。

这种行为可以通过gsnLeftString(控制左上角)、gsnCenterString(控制中间位置)和gsnRightString(控制右上角)来改变。

例:

res=Trueres@gsnRightString="mystring"res@gsnCenterString="center"

六、颜色设置

6.1颜色填充

通过设置cnFillOn=True你可以为当前的等高线设置填充颜色。

另外“cnFillMode=“RasterFill“表示使用光栅模式。

你还需要为你的workstation指定一个colormap。

关于colormap的跟多信息请参见:

http:

//www.ncl.ucar.edu/Document/Graphics/color_tables.shtml

6.2默认的colormap

NCL的默认的colormap包含一系列的不同的颜色。

有三种方法改变colormap

–1、选择一种内置的colormap(6.3)。

–2、指定一个代表RGB数值的nX3维的数组(6.4)。

–3、指定一个包含颜色名称的数组。

6.3内置的colormaps

有许多预定义的colormaps,可以参考以下链接:

–http:

//www.ncl.ucar.edu/Document/Graphics/color_tables.shtml

你可以这样为你的workstation指定一个colormap:

–gsn_define_colormap(wks,gui_default)

6.4使用RGB数组

你可以通过RGB数组自定义一个colormap。

例:

colors=(/(/255,255,255/),\(/0,0,0/),\(/255,255,255/),\(/244,255,244/),\(/217,255,217/),\(/163,255,163/),\(/106,255,106/),(/43,255,106/),\(/255,127,0/)/)gsn_define_colormap(wks,colors)第一和第二个颜色值为黑和白,分别代表前景色和背景色。

6.5通过颜色的名称

NCL有一系列的命名好的颜色值,可以参考一下链接:

http:

//www.ncl.ucar.edu/Document/Graphics/named_colors.shtml例:

colors=(/“white,“black,“white,“RoyalBlue,\"LightSkyBlue","PowderBlue","LightGreen","PaleGreen",\"wheat","brown","pink"/)gsn_define_colormap(wks,colors)

6.6gsnSpreadColors

默认的情况下,NCL会根据要填充的等高线或矢量图的个数n选择colormap中的前n个颜色。

除非你设置gsnSpreadColors=True,这时NCL将在colormap中均匀的选择n个颜色值,比如:

有10个等高线水平和200个颜色值,这时NCL会每隔20选择一个颜色值。

你也可以通过设置gsnSpreadColorStart和gsnSpreadColorEnd控制选择颜色的开始下标和结束下标。

6.7CMYK

许多科学期刊要求论文要提供CMYK格式的图片。

CMYK也是商业印刷优先考虑的颜色模式。

下面的代码将创建一个CMYK格式的图形:

type="ps"type@wkColorModel="cmyk“wks=gsn_open_wks(type,"color")gsn_define_colormap(wks,"BlWhRe")–postscript文件在输出时将转换为CMYK格式。

七、向量

7.1向量的类型

在NCL中有四种类型的向量图,可以通过vcGlyphStyle=“type来设置:

––––“LineArrow:

多条带箭头的线段,这时默认的。

“FillArrow:

填充的带箭头的多边形。

“WindBard:

使用在天气图上看到的标准的风倒钩字形。

“CurlyVector:

acurvedpolylinetangenttotheinstantaneousflowintheneighborhoodofthegridpoint.

7.2对向量图的设置

res@vcRefMagnitudeF=10.0可以设置向量的弯曲程度。

vcRefLengthF=0.045可以设置向量的长度res@vcMinDistanceF=0.017可以设置向量的疏密程度。

7.3向量被标量场(等高线)上色,或在标量场上上色

有四种接口可以在同一副图上画出等高线和向量。

––––gsn_csm_vector_scalar_map_cegsn_csm_vector_scalar_map_polargsn_csm_vector_scalar_mapgsn_csm_pres_hgt_vector

这些接口默认的行为是根据标量场的量级为向量上色。

若要改变这些默认行为,可以设置resource变量的属性gsnScalarContour为True。

可以创建独立的等高线和向量图,然后使用overlay子程序将它们结合在一起。

overlay有两个graphical类型的参数,overlay会将第二个图形结合到第一个图形上。

例:

;创建向量图res=Trueres@vcRefMagnitudeF=30.0res@vcRefLengthF=0.045res@vcMinDistanceF=.019res@vcGlyphStyle="CurlyVector“res@gsnDraw=Falseres@gsnFrame=Falseres@gsnLeftString=""res@gsnRightString=""plot=gsn_csm_vector(wks,u,v,res)

;创建等高线图resCN=TrueresCN@cnFillOn=TrueresCN@cnLinesOn=FalseresCN@gsnSpreadColors=TrueresCN@gsnDraw=Falsebase=gsn_csm_contour(wks,data,resCN);overlay;用overlay将它们结合起来overlay(base,plot)draw(base)frame(wks)

成功创建一个overlay的关键是两个图形的坐标变量的数据是相同的。

八、地图的刻度标记

有两种类型的地图刻度标记。

第一种(下图左面)是*_ce和*_polar图形接口默认。

第二种(下图右面)是4.2.0版本后添加的。

你可以通过设置pmTickMarkDisplayMode=“Always“来使用第二种标记。

九、页面最大化

resource属性gsnMaximize可以自动的调整图形的大小,必要时会旋转图形以填充页面。

res@gsnMaximize=True

10、等高线

10.1手动设置等高线的量级

需要下面四个resources

res@cnLevelSelectionMode=“ManualLevelsres@cnMinLevelValF=-30res@cnMaxLevelValF=30res@cnLevelSpacingF=5

10.2等高线效果

有许多函数和gsnresources可以设置等高线效果。

gsnContourZeroLineThicknessF可以设置基准线的宽度。

gsnContourNegLineDashPattern可以为负的等高线设置虚线模式。

有一系列的函数可以为一个等高线图形的不同部分填充不同的底纹。

这些函数包含在ncl的shea_util.ncl库文件中。

你需要这样引用它:

load"$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl“shea_util.ncl中包含函数的详细信息可以参考以下链接:

http:

//www.ncl.ucar.edu/Document/Functions/list_shea_util.shtml

10.3明确的设置等高线量级

res@cnLevelSelectionMode="Explicit"res@cnLevels=(/.01,4,7.2/)

10.4等高线的标签

有三种等高线标签定位模式:

randomized(默认)、computed和constant。

只有constant模式使标签是线的一部分。

其它两种模式中线会穿过标签。

可以通过设置cnLabelMasking=True来避免这种情况的发生。

还可以通过cnLineLabelBackgroundColor来选择标签的背景色。

在constant模式下,cnLineDashSegLenF可以控制标签的密度。

在randomized和computed模式下则是通过cnLineLabelDensityF来控制。

 

十一、二维lat/lon数组

有关于二维lat/lon信息的数据可以分为两类。

第一类是:

已经投射到了地球的区域的数据。

我们称这种为本地的网格投影。

一个常见的例子是本地的兰伯特正形投影。

第二类是:

数据通过不规则的网格点得到,这些网格点必须通过唯一的位置来解释,但是这些数据是没有预先投影过的。

有许多网格包含在这种类型里,包括曲线的网格或有限元网格。

不同的种类需要不同的技术来处理,所以如果你的数据有二维lat/lon的信息,你必须提前知道它是哪种类型的。

11.1本地网格投影

许多GRIB和netCDF文件会包含像gridtype这样的属性,它指明了投影的类型。

对于其它没有这类信息的文件,你可以从数据提供者那里了解到。

对于本地网格投影,第一个技术是关闭数据映射到地图上的转换。

–res@tfDoNDCOverlay=True

第二个技术是通过corners方法正确的限定地图的范围。

使用这个技术时你必须知道左下角和右上角的坐标:

res@mpLimitMode="Corners"res@mpLeftCornerLatF=16res@mpLeftCornerLonF=135res@mpRightCornerLatF=54res@mpRightCornerLonF=79

有一些netCDF和GRIB文件包含的数组corners含有这些信息。

最后的技术是网格的具体细节。

网格本身必须被指定,一些用来定义网格的resources必须设置。

例如,兰伯特正形投影需要设置两个维度,和一个经度。

例:

res@mpProjection="LambertConformal"res@mpLambertParallel1F=30.res@mpLambertParallel2F=55.res@mpLambertMeridianF=45.

11.2不规则的网格

特殊属性lon2d和lat2被用来准确的在地图上画出这类数据。

创建一个符合以下特征的数据文件:

time=1nlat=345nlon=567floatTLON(nlat,nlon)floatTLAT(nlat,nlon)floatROFF(time,nlat,nlon)

接下来需要进行的处理:

tlat=f->TLATtlon=f->TLONroff=f->ROFFroff@lon2d=tlatroff@lat2d=tlon

tlat和tlon是变量名称,并且可以被命名为任何名字,属性lon2d和lat2d是保留的,不能被更改的。

明确的设置这两个属性是正确的将数据(带有二维lat/lon信息)画出所需要的唯一条件。

十二、改变屏幕的宽高比

用两个resources:

vpWidthF和vpHeightF可以改变图形的宽高比。

注意:

如果你要画的是一个地图,resourcempShapeMode=“FreeAspect也必须添加。

十三、镶嵌

一个镶嵌的图形包括两个或多个在同一页上进行渲染的图形对象。

最常用的镶嵌方法是通过特殊的gsn接口gsn_panel。

它假设所有的图形对象都是同样大小的。

它使用第一个参数的尺寸和形状来确定最终显示图形的窗口。

13.1一个简单的例子

plot=new(2,graphic)res=Trueres@cnFillOn=True

res@gsnSpreadColors=Trueres@gsnDraw=Falseres@gsnFrame=Falseplot(0)=gsn_csm_contour(wks,u,res)plot

(1)=gsn_csm_contour(wks,v,res)resP=TrueresP@txString="commontitle“gsn_panel(wks,plot,(/2,1/),resP);第一个参数为workstation,第二个参数为图形所在的数组,第三个参数为各个图形的排列方式(在下一节有详细的介绍),第四个数组是为最终图形设置的resources。

13.2在页面上定位图形

gsn_panel的第三个参数是一个指定图形如何在页面上定位的数组。

这个数组简单的表示是:

表示希望显示的行和列的个数。

当你设置了特殊的resourcegsnPanelRowSpec=True时,你可以对图形的定位进行更好的控制:

这时数组的每个数表述对应行中图形的个数。

例:

(/1,3,2/)

当你创建一个镶嵌的图形时,下面的resources会经常用到,它们是为gsn_panel设置的,不能在画单独的图形时使用。

txString:

公共的标题gsnPanelLabelBar:

公共的labelbargsnPanelBottom:

最后一个图形的底部距窗口的距离比,它的值要大于0.0,小于1.0gsnPanelTop:

第一个图形的顶部距窗口的距离比,它的值要大于0.0,小于1.00.01.0gsnPanelFigureStrings:

将指定的字符串替换到每个图形的左上角。

13.4用不同的大小镶嵌图形

你可以手动的设置一个frame去包含不同尺寸的图形,这样需要自己指定它在页面上的位置和尺寸。

参考下面的例子。

;创建第一个图形res=Trueres@gsnFrame=Falseres@vpXF=0.2res@vpYF=0.83res@vpWidthF=0.6res@vpHeightF=0.465plot1=gsn_csm_contour_map_polar(wks,d,res);创建第二个图形sres=Truesres@gsnFrame=Falsesres@vpXF=0.15sres@vpYF=0.3sres@vpWidthF=0.7sres@vpHeightF=0.18plot2=gsn_csm_xy(wks,x,y,sres)frame(wks)

十四、字体的高度

在NCL中有很多标签和标题。

它们都可以被它们的resources控制。

例如:

底部的X坐标的刻度标签的文字高度可以通过tmXBFontHeightF来设置。

labelbar的标签的文字高度可以通过lbLabelFontHeightF来控制。

附录A包含了一系列常用的文字高度resources。

十五、标题

NCL中有三种主要的标题和三种附加的标题。

主要的标题可以通过resources:

tiMainString(主标题)、tiXAxisString(x坐标标题)和tiYAxisString(y坐标标题)。

5.6节讨论了附加的标题resources:

gsnLeftString,gsnRightString和gsnCenterString.

十六、说明(legend)

默认的情况下,一个x-y图形时没有说明的,要显示说明,你必须设置pmLegendDisplayMode="Always".关于说明(legend)的更多信息参见附录A

十七、颜色条(LabelBars)

在gsn_csm高水平图形接口中,当用户设置resources“cnFillOn=True时,一个颜色条会被自动的创建。

颜色条默认是水平的,在图形的下面。

标签显示在各个颜色的边缘。

附录A包含了一系列的resources可以用来修改默认的行为。

也可以通过gsn图形接口自定义一个颜色条。

参考以下链接:

http:

//www.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1