爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7872|回复: 5

[作图] 关于ncl画南海的问题

[复制链接]
发表于 2017-9-8 10:03:59 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
用ncl画图,已经画出了所有数据,就是除了南海,请问要怎么加上去呢?脚本和图如下
begin
fr="e:/biye/wenzhang/tsummer_d.txt"
r=asciiread(fr, 160, "float")
r2=asciiread("e:/biye/wenzhang/tsummer_t.txt", 160, "float")
x=asciiread("e:/biye/wenzhang/lon_tsummer_outd.txt", 76, "float")
y=asciiread("e:/biye/wenzhang/lat_tsummer_outd.txt", 76, "float")
;printVarSummary(r)
;flat="e:/cyg/cygdrive/lat.txt"
;lat=asciiread(flat, 41, "float")
;flon="e:/cyg/cygdrive/lon.txt"
;lon=asciiread(flon, 71, "float")
flatlon="e:/biye/wenzhang/lat_lon.txt"
latlon=asciiread(flatlon, (/160,2/), "float")
zlat=latlon(:,0)
zlon=latlon(:,1)
;print(zlat)
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"

olon=new(71, "float")
olat=new(41, "float")
do i=0,70
    olon(i)=70+i
end do  
do l=0,40
    olat(l)=15+l
end do
olon!0="zlon"
olon@long_name="lon"
olon@units="degrees_east"
olon&zlon=olon
olat!0="zlat"
olat@long_name="lat"
olat@units="degrees_north"
olat&zlat=olat
test="e:/biye/wenzhang/tsummer_d&t"
data1=new((/41,71/), "float")
data2=new((/41,71/), "float")

;cha=new((/41,71/), float)
r@_FillValue=99999.0
r2@_FillValue=99999.0
rscan=(/10,5,2/)
data1=obj_anal_ic_Wrap(zlon, zlat, r, olon ,olat, rscan, False)
data2=obj_anal_ic_Wrap(zlon, zlat, r2, olon ,olat, rscan, False)
data1!0="lat"
data1!1="lon"
data1&lat=olat
data1&lon=olon
data2!0="lat"
data2!1="lon"
data2&lat=olat
data2&lon=olon

;---------------绘图设置
res=True
res@gsnAddCyclic=False
res@gsnDraw=False
res@gsnFrame=False
mpres=res

wks=gsn_open_wks("png",test)
;--------等值线命令设置
res=True
res@gsnAddCyclic=False
res@gsnDraw=False
res@gsnFrame=False
res@cnLineDrawOrder       = "PreDraw" ;去掉中国区域外的等值线
res@cnLineLabelPlacementMode="Constant"
res@cnLineLabelInterval=1 ;每一条等值线都标记数字
res@cnLineLabelFontHeightF=0.01 ; 等值线上数字大小
res@cnLineThicknessF=3
;res@cnFillOn=True ;不填色
res@cnLinesOn=True ;绘制等值线
res@cnLevelSelectionMode="ManualLevels"
;res@cnMaxLevelValF=3
;res@cnMinLevelValF=-3
;res@cnLevelSpacingF=2
res@gsnMaximize=True
res@cnInfoLabelOn = False
res@cnSmoothingOn=True
res@cnSmoothingDistanceF=0.005
res@cnSmoothingTensionF =0.005;平滑曲线
;-------t检验(阴影)部分设置
chres=True
chres@gsnAddCyclic=False
chres@gsnDraw=False
chres@gsnFrame=False
chres@cnFillOn=True
chres@cnLinesOn=False
chres@gsnAddCyclic=False
chres@gsnMaximize=True
chres@cnFillDrawOrder      = "Predraw"
  chres@cnLineLabelsOn   = False
  chres@lbLabelBarOn   = True  
  chres@cnInfoLabelOn = False

chres@cnLevelSelectionMode= "ExplicitLevels"
chres@cnLevels=(/-4,-2,2,4,6,8/)
chres@cnFillColors=(/17,65,0,150,180,220,237/)
;-------------蒙特卡洛设置
mtklres=True
mtklres@gsMarkerIndex = 16                        ; polymarker style  
mtklres@gsMarkerSizeF = 6                      ; polymarker size  
mtklres@gsMarkerColor = "black"                  ; polymarker color  
mtklres@tfPolyDrawOrder = "PostDraw"  
mtklres@cnFillDrawOrder      = "PostDraw"  ; draw polygon first   
   

;-------------地图设置
mpres@mpDataBaseVersion="Mediumres"
mpres@mpDataSetName="Earth..4"
mpres@mpOutlineOn=True  ;绘制地图边缘
mpres@mpGeophysicalLineThicknessF= 5.      ; 加粗地理边界
mpres@mpNationalLineThicknessF= 5.         ; 加粗国界
mpres@mpOutlineSpecifiers    = (/"China:states","Taiwan"/)
mpres@mpOutlineBoundarySets  = "NoBoundaries";;;"Geophysical"          ;;; or "NoBoundaries"
mpres@mpAreaMaskingOn = True                          ;;ʹÄÜÌî³ä¸²¸Ç
mpres@mpMaskAreaSpecifiers = (/"China:states","Taiwan"/)
mpres@mpOceanFillColor       = "white"            ;;;array index in color map
mpres@mpLandFillColor        = "white"          ;;;;for land, ocean, and inland h20
mpres@mpInlandWaterFillColor = "white"
   
mpres@mpGeophysicalLineColor = "black"
mpres@mpProvincialLineColor = "gray"
mpres@mpNationalLineColor = "black"
mpres@mpProvincialLineThicknessF =1
mpres@cnLevelSelectionMode= "ExplicitLevels"
mpres@mpMinLatF              = 17                ; map area
mpres@mpMaxLatF              = 55                ; latitudes
mpres@mpMinLonF              = 72              ; and
mpres@mpMaxLonF              = 136
mpres@mpGridAndLimbDrawOrder = "Predraw"

;-------斜线部分设置
;opt=True
;opt@gsnMaximize=True
;opt@gsnShadeFillType = "pattern"        ; color is the default     ; color index 14
;opt@gsnShadeLow     =  3
;opt@gsnShadeHigh     = 3
;opt@gsnAddCyclic=False
;opt@gsnDraw=False
;opt@gsnFrame=False
;opt@cnFillOn=True
mpid = gsn_csm_map(wks,mpres)
plot=gsn_csm_contour(wks, data1, res)
shade=gsn_csm_contour(wks, data2, chres)
mtkl=gsn_add_polymarker(wks,mpid,x,y,mtklres)
;shade2 =gsn_contour_shade(shade, -2,2, opt)
overlay(mpid,shade)
overlay(mpid,mtkl)
overlay(mpid,plot)

draw(mpid)
frame(wks)
end

tsummer_d&t.png
密码修改失败请联系微信:mofangbao
发表于 2017-9-8 10:39:20 | 显示全部楼层
密码修改失败请联系微信:mofangbao
发表于 2017-9-8 14:44:51 | 显示全部楼层
发问前多看看论坛,多搜索一下
密码修改失败请联系微信:mofangbao
发表于 2017-9-8 15:28:10 | 显示全部楼层
https://coding.net/u/huangynj/p/NCL-Chinamap/git
这里。。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2017-9-11 19:12:07 | 显示全部楼层
WZZ809525579 发表于 2017-9-8 10:39
http://bbs.06climate.com/forum.php?mod=viewthread&tid=45252&extra=page%3D1

但也只能画出包括南海的大图,怎么让南海出现在右下角的框框里?
密码修改失败请联系微信:mofangbao
发表于 2019-1-17 09:49:58 | 显示全部楼层
感谢分享,非常有帮助
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表