- 积分
- 5746
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-7-22
- 最后登录
- 1970-1-1
|
50金钱
本帖最后由 清凉月 于 2023-5-7 03:54 编辑
想画个散度的填色图,ncl一直不报错不出图,删减版程序如下:
(程序里涉及的文件都在附件里)
- load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/calendar_decode2.ncl"
- 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"
- begin
- ;-------------计算300hPa位势高度的气候态和距平--------------------------------------------------
- f_data1 = addfile("500hPa_Global_1980_2021_monthly.nc","r")
- lat = f_data1->latitude
- lon = f_data1->longitude
- f_data2 = addfile("div.nc","r") ;改类型
- div = f_data2->div
- div!0 = "lat"
- div&lat = lat
- div!1 = "lon"
- div&lon = lon
- div@units = "m/s^2"
- div@units = "m/s^2"
- data = div(:,:)
- wks = gsn_open_wks("png","xxx")
- ;-------------散度--------------------------------------------------
- gsn_define_colormap( wks ,"GreenMagenta16")
- res2 = True
- res2@gsnMaximize = True
- res2@gsnAddCyclic = False ;有循环点(全球数据)
- res2@cnLinesOn = False
- res2@cnFillOn = True
- ; ;设置地图
- res2@mpFillOn = False
- res2@mpMinLonF = -60
- res2@mpMaxLonF = 180
- res2@mpMinLatF = 15
- res2@mpMaxLatF = 90
- res2@pmTickMarkDisplayMode = "Always"
- ;地图数据
- res2@mpDataSetName = "./database/Earth..4"
- res2@mpDataBaseVersion = "MediumRes" ; or "Ncarg4_1"
- res2@mpGeophysicalLineColor= "black"
- ;设置地图经纬线
- res2@mpGridAndLimbOn = True
- res2@mpGridLineThicknessF = 0.5
- res2@mpGridLineDashPattern = 2
- res2@mpGridSpacingF = 15
- ;色标垂直放
- res2@lbOrientation = "Vertical"
- res2@cnLevelSelectionMode = "ExplicitLevels"
- res2@cnLevels = (/-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7/)
- res2@cnFillColors = (/2,3,4,5,6,7,8,0,0,11,12,13,14,15,16/)
- data@_FillValue = 32766
- data@missing_value = 32766
- ; printVarSummary(data)
- plot_2 = gsn_csm_contour_map(wks,data,res2)
- end
复制代码
奇怪的是,当把关于mp的设置都删了,把这句话改成这样:plot_2 = gsn_csm_contour(wks,data,res2)之后,出来这么一张图【图片1】
但是用Panoply看了下散度算的也没有问题,别人拿python画了图也没有问题,如【图2】。
所以想问一下这个程序问题出在哪里,感谢~
下载附件居然要扣钱,放网盘了
链接:https://pan.baidu.com/s/1JOfNHKxGSHD9V88P8IT_Wg?pwd=u658
提取码:u658
--来自百度网盘超级会员V6的分享
|
最佳答案
查看完整内容
问题可能出在,你的div数据里面包含了nan缺测值,你在读入div后,加一行,replace_ieeenan(div,32767.0,0)试试。另外,div本身有经纬度坐标,后面再给div坐标重新定义无必要。
|