ncl:NCL初学者画海平面气压异常场

一、目的

计算并绘制2021年4月的海平面气压距平场(气候平均分别取为 1961-1990年(30a平均)、1991-2020年(30a平均)和1961- 2020年(60a平均)的结果);

二、代码实现

1.数据提取并按要求切片

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"load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl";************************************************; 求距平和气候态的代码;************************************************;************************************************; define parameters;************************************************yrStrt = 1961yrLast = 2020nyr = yrLast-yrStrt+1nmon = 12ntime = nmon*nyrlat1 = 0lat2 = 90;************************************************; 1961-2020;************************************************fdir1 = "/home/22597/hwmf/"fname1 = "slp.mon.mean.nc"infile1 = addfile(""+fdir1+""+fname1+"", "r")TIME = infile1->timeslp = infile1->slpYYYY = cd_calendar(TIME,-1)/100iYYYY = ind(YYYY.ge.yrStrt .and. YYYY.le.yrLast);print(iYYYY)XX_obs = infile1->slp(iYYYY,::-1,:)XX_ob = XX_obs(3:ntime-1:12,{lat1:lat2},:)f_avg = dim_avg_n_Wrap(XX_ob,0);************************************************; 1961-1990;************************************************yrStrt0 = 1961yrLast0 = 1990nyr0 = yrLast0-yrStrt0+1nmon0 = 12ntime0 = nmon0*nyr0nyr0 = yrLast0-yrStrt0+1TIME0 = infile1->timeYYYY0 = cd_calendar(TIME0,-1)/100iYYYY0 = ind(YYYY0.ge.yrStrt0 .and. YYYY0.le.yrLast0)XX_obs0 = infile1->slp(iYYYY0,::-1,:)XX_ob0 = XX_obs0(3:ntime0-1:12,{lat1:lat2},:)f_avg0 = dim_avg_n_Wrap(XX_ob0,0);************************************************; 1991-2020;************************************************yrStrt1 = 1991yrLast1 = 2020nyr1 = yrLast1-yrStrt1+1nmon1 = 12ntime1 = nmon1*nyr1nyr1 = yrLast1-yrStrt1+1TIME1 = infile1->timeYYYY1 = cd_calendar(TIME1,-1)/100iYYYY1 = ind(YYYY1.ge.yrStrt1 .and. YYYY1.le.yrLast1)XX_obs1 = infile1->slp(iYYYY1,::-1,:)XX_ob1 = XX_obs1(3:ntime1-1:12,{lat1:lat2},:)f_avg1 = dim_avg_n_Wrap(XX_ob1,0);****************************************************************; 求距平2021年4月;****************************************************************yrStrt7 = 2020yrLast7 = 2021nyr7 = yrLast7-yrStrt7+1nmon7 = 12ntime7 = nmon7*nyr7nyr7 = yrLast7-yrStrt7+1TIME7 = infile1->timeYYYY7 = cd_calendar(TIME7,-1)/100iYYYY7 = ind(YYYY7.ge.yrStrt7 .and. YYYY7.le.yrLast7)XX_obs7 = infile1->slp(iYYYY7,::-1,:)XX_ob7 = XX_obs7(3:ntime7-1:12,{lat1:lat2},:)

至此完成了数据的提取。

2.求距平

slp214 = XX_ob7(1, :, :)anoslp6190 = slp214-f_avg0anoslp6120 = slp214-f_avganoslp9120 = slp214-f_avg1anoslp6190!0 = "lat" ;第一维的名称anoslp6190&lat = f_avg0&lat ;第一维的值,直接从文件中的变量u中提取anoslp6190!1 = "lon" ;第二维的名称anoslp6190&lon = f_avg0&lonanoslp6120!0 = "lat" ;第一维的名称anoslp6120&lat = f_avg&lat ;第一维的值,直接从文件中的变量u中提取anoslp6120!1 = "lon" ;第二维的名称anoslp6120&lon = f_avg&lonanoslp9120!0 = "lat" ;第一维的名称anoslp9120&lat = f_avg1&lat ;第一维的值,直接从文件中的变量u中提取anoslp9120!1 = "lon" ;第二维的名称anoslp9120&lon = f_avg1&lon

3.由于数据被重新切片过,要赋予其新的经纬度属性。

slp214 = XX_ob7(1, :, :)anoslp6190 = slp214-f_avg0anoslp6120 = slp214-f_avganoslp9120 = slp214-f_avg1anoslp6190!0 = "lat" ;第一维的名称anoslp6190&lat = f_avg0&lat ;第一维的值,直接从文件中的变量u中提取anoslp6190!1 = "lon" ;第二维的名称anoslp6190&lon = f_avg0&lonanoslp6120!0 = "lat" ;第一维的名称anoslp6120&lat = f_avg&lat ;第一维的值,直接从文件中的变量u中提取anoslp6120!1 = "lon" ;第二维的名称anoslp6120&lon = f_avg&lonanoslp9120!0 = "lat" ;第一维的名称anoslp9120&lat = f_avg1&lat ;第一维的值,直接从文件中的变量u中提取anoslp9120!1 = "lon" ;第二维的名称anoslp9120&lon = f_avg1&lon

4.绘图程序

wks = gsn_open_wks("png","short-term climate forecast anomaly") gsn_define_colormap(wks,"BlueYellowRed")res = True res@gsnAddCyclic = Falseres@cnLevelSelectionMode = "ManualLevels"res@cnMinLevelValF = -20.0 ; Min contourres@cnMaxLevelValF = 20.0 ; Max contourres@cnLevelSpacingF = 1 ; Spacingres@cnFillOn = True ; Turn on contour fillres@cnLinesOn = False ; Turn off contour linesres@lbBoxLinesOn = False ; Turn off lbar box linesres@mpFillOn = Falseres@mpCenterLonF=180res@mpMinLatF=0res@mpMaxLatF=90res@mpMinLonF=-180res@mpMaxLonF=180;res@tiMainString = "1991-2020 Northern hemisphere climate" plot = new(3,"graphic")plot(0) = gsn_csm_contour_map(wks,anoslp6120,res)plot(1) = gsn_csm_contour_map(wks,anoslp6190 ,res)plot(2) = gsn_csm_contour_map(wks,anoslp9120,res); ************************************************; create panel; ************************************************resP = True ; modify the panel plotresP@gsnFrame = False ; don't advance panel plot; resP@gsnPanelLabelBar = True ; add common colorbarresP@gsnPanelMainString ="short-term climate forecast" ; new way of setting main title (as of NCL V6.4.0); resP@txString = "A common title" ; old way of setting main titleresP@gsnPanelBottom = 0.05 ; add space at bottomresP@gsnPanelFigureStrings= (/"1961-2020 anomaly","1961-1990 anomaly","1991-2020 anomaly"/) ; add strings to panelresP@amJust = "TopLeft"gsn_panel(wks,plot,(/3,1/),resP) frame(wks)

三、图片展示

 

相关推荐

最新

相关文章