爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 11275|回复: 1

[作图] 请问为什么我画的风场图和海温图不匹配?

[复制链接]

新浪微博达人勋

发表于 2018-9-26 16:40:05 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 林明宇 于 2018-9-26 16:45 编辑

大家好,我想把1981至2016年间的nino index>0.8的年份挑出来做合成,合成图中画风场和海表面温度场,画出的图在赤道太平洋不符合Gill响应,请问是图画时年份错位了吗?可是我的年份是用ind选出的,应该是对应的,麻烦大家给看一下,谢谢大家!

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"

begin

year=ispan(1981,2016,1)

it_s=198112
it_e=201711
refmag1=2
refmag2=4

f_sst=addfile("/disk02/wrg-linmy/dataset/NOAA OI SST V2/monthly1981.12-2018.06/sst.mnmean.nc","r")
lsm=addfile("/disk02/wrg-linmy/dataset/NOAA OI SST V2/monthly1981.12-2018.06/lsmask.nc","r")
mas1=shorttobyte(lsm->mask(0,::-1,:))
mas2=shorttobyte(lsm->mask(0,::-1,:))
mas3=shorttobyte(lsm->mask(0,::-1,:))
mas4=shorttobyte(lsm->mask(0,::-1,:))
time=f_sst->time
YYYYMM=cd_calendar(time,-1)

rec_s=ind(it_s.eq.YYYYMM)
rec_e=ind(it_e.eq.YYYYMM)


sst=short2flt(f_sst->sst(rec_s:rec_e,:,:))

printVarSummary(sst)

f1=addfile("/disk02/wrg-linmy/dataset/NCEP-DOE Reanalysis 2/uwnd.mon.mean.nc","r")
u850=short2flt(f1->uwnd(rec_s:rec_e,2,:,:))
u200=short2flt(f1->uwnd(rec_s:rec_e,9,:,:))

printVarSummary(u850)

f2=addfile("/disk02/wrg-linmy/dataset/NCEP-DOE Reanalysis 2/vwnd.mon.mean.nc","r")
v850=short2flt(f2->vwnd(rec_s:rec_e,2,:,:))
v200=short2flt(f2->vwnd(rec_s:rec_e,9,:,:))

;------------------plot wind temp of of 850hPa in JJA---------------------------------------
sst1_JJA=month_to_season(sst,"JAS")

copy_VarMeta(sst(0,:,:),sst1_JJA(0,:,:))
sst1_JJA!0="year"
sst1_JJA&year=year

sst1_ano=dim_rmvmean_n_Wrap(sst1_JJA, 0)


u1_JJA=month_to_season(u850,"JAS")
v1_JJA=month_to_season(v850,"JAS")

copy_VarMeta(u850(0,:,:), u1_JJA(0,:,:))
u1_JJA!0="year"
u1_JJA&year=year
u1_ano=dim_rmvmean_n_Wrap(u1_JJA,0)

copy_VarMeta(v850(0,:,:),v1_JJA(0,:,:))
v1_JJA!0="year"
v1_JJA&year=year
v1_ano=dim_rmvmean_n_Wrap(v1_JJA,0)

ensoi1=wgt_areaave_Wrap(sst1_JJA(:,{-5:5},{190:240}),1.,1.,0)
ensoi1=dim_standardize_Wrap(ensoi1,1)



irec_positive1=ind(ensoi1.gt.0.8)
nnumb1=dimsizes(irec_positive1)

sst1_comp=dim_avg_n_Wrap(sst1_ano(irec_positive1,:,:),0)
u1_comp=dim_avg_n_Wrap(u1_ano(irec_positive1,:,:),0)
v1_comp=dim_avg_n_Wrap(v1_ano(irec_positive1,:,:),0)

sst1_std=dim_variance_n_Wrap(sst(irec_positive1,:,:),0)
sst1_std=sqrt(sst1_std/nnumb1)
sst1_std=where(sst1_std.eq.0,sst1_std@_FillValue,sst1_std)
t_sst1=sst1_comp/sst1_std
confi_sst1=sst1_comp
confi_sst1=student_t(t_sst1,nnumb1-1)


;------------------plot wind temp of 850hPa in DJF---------------------------------------


sst2_DJF=month_to_season(sst,"JFM")

copy_VarMeta(sst(0,:,:),sst2_DJF(0,:,:))
sst2_DJF!0="year"
sst2_DJF&year=year

sst2_ano=dim_rmvmean_n_Wrap(sst2_DJF, 0)


u2_DJF=month_to_season(u850,"JFM")
v2_DJF=month_to_season(v850,"JFM")

copy_VarMeta(u850(0,:,:), u2_DJF(0,:,:))
u2_DJF!0="year"
u2_DJF&year=year
u2_ano=dim_rmvmean_n_Wrap(u2_DJF,0)

copy_VarMeta(v850(0,:,:),v2_DJF(0,:,:))
v2_DJF!0="year"
v2_DJF&year=year
v2_ano=dim_rmvmean_n_Wrap(v2_DJF,0)

ensoi2=wgt_areaave_Wrap(sst2_DJF(:,{-5:5},{190:240}),1.,1.,0)
ensoi2=dim_standardize_Wrap(ensoi2,1)

irec_positive2=ind(ensoi2.gt.0.8)
nnumb2=dimsizes(irec_positive2)

sst2_comp=dim_avg_n_Wrap(sst2_ano(irec_positive2,:,:),0)
u2_comp=dim_avg_n_Wrap(u2_ano(irec_positive2,:,:),0)
v2_comp=dim_avg_n_Wrap(v2_ano(irec_positive2,:,:),0)

sst2_std=dim_variance_n_Wrap(sst(irec_positive2,:,:),0)
sst2_std=sqrt(sst2_std/nnumb2)
sst2_std=where(sst2_std.eq.0,sst2_std@_FillValue,sst2_std)
t_sst2=sst2_comp/sst2_std
confi_sst2=sst2_comp
confi_sst2=student_t(t_sst2,nnumb2-1)




;------------------plot wind temp of of 200hPa in JJA---------------------------------------
sst3_JJA=month_to_season(sst,"JAS")

copy_VarMeta(sst(0,:,:),sst3_JJA(0,:,:))
sst3_JJA!0="year"
sst3_JJA&year=year

sst3_ano=dim_rmvmean_n_Wrap(sst3_JJA, 0)


u3_JJA=month_to_season(u200,"JAS")
v3_JJA=month_to_season(v200,"JAS")

copy_VarMeta(u200(0,:,:), u3_JJA(0,:,:))
u3_JJA!0="year"
u3_JJA&year=year
u3_ano=dim_rmvmean_n_Wrap(u3_JJA,0)

copy_VarMeta(v200(0,:,:),v3_JJA(0,:,:))
v3_JJA!0="year"
v3_JJA&year=year
v3_ano=dim_rmvmean_n_Wrap(v3_JJA,0)

ensoi3=wgt_areaave_Wrap(sst3_JJA(:,{-5:5},{190:240}),1.,1.,0)
ensoi3=dim_standardize_Wrap(ensoi3,1)



irec_positive3=ind(ensoi3.gt.0.8)
nnumb3=dimsizes(irec_positive3)

sst3_comp=dim_avg_n_Wrap(sst3_ano(irec_positive3,:,:),0)
u3_comp=dim_avg_n_Wrap(u3_ano(irec_positive3,:,:),0)
v3_comp=dim_avg_n_Wrap(v3_ano(irec_positive3,:,:),0)

sst3_std=dim_variance_n_Wrap(sst(irec_positive3,:,:),0)
sst3_std=sqrt(sst3_std/nnumb3)
sst3_std=where(sst3_std.eq.0,sst3_std@_FillValue,sst3_std)
t_sst3=sst3_comp/sst3_std
confi_sst3=sst3_comp
confi_sst3=student_t(t_sst3,nnumb3-1)


;------------------plot wind temp of 200hPa in DJF---------------------------------------


sst4_DJF=month_to_season(sst,"JFM")

copy_VarMeta(sst(0,:,:),sst4_DJF(0,:,:))
sst4_DJF!0="year"
sst4_DJF&year=year

sst4_ano=dim_rmvmean_n_Wrap(sst4_DJF, 0)


u4_DJF=month_to_season(u200,"JFM")
v4_DJF=month_to_season(v200,"JFM")

copy_VarMeta(u200(0,:,:), u4_DJF(0,:,:))
u4_DJF!0="year"
u4_DJF&year=year
u4_ano=dim_rmvmean_n_Wrap(u4_DJF,0)

copy_VarMeta(v200(0,:,:),v4_DJF(0,:,:))
v4_DJF!0="year"
v4_DJF&year=year
v4_ano=dim_rmvmean_n_Wrap(v4_DJF,0)

ensoi4=wgt_areaave_Wrap(sst4_DJF(:,{-5:5},{190:240}),1.,1.,0)
ensoi4=dim_standardize_Wrap(ensoi4,1)

irec_positive4=ind(ensoi4.gt.0.8)
nnumb4=dimsizes(irec_positive4)

sst4_comp=dim_avg_n_Wrap(sst4_ano(irec_positive4,:,:),0)
u4_comp=dim_avg_n_Wrap(u4_ano(irec_positive4,:,:),0)
v4_comp=dim_avg_n_Wrap(v4_ano(irec_positive4,:,:),0)

sst4_std=dim_variance_n_Wrap(sst(irec_positive4,:,:),0)
sst4_std=sqrt(sst4_std/nnumb4)
sst4_std=where(sst4_std.eq.0,sst4_std@_FillValue,sst4_std)
t_sst4=sst4_comp/sst4_std
confi_sst4=sst4_comp
confi_sst4=student_t(t_sst4,nnumb4-1)





mas1(:,:)=landsea_mask(mas1(:,:),sst1_comp&lat,sst1_comp&lon)
sst1_comp(:,:)=mask(sst1_comp(:,:),mas1(:,:).eq.1,True)
mas2(:,:)=landsea_mask(mas2(:,:),sst2_comp&lat,sst2_comp&lon)
sst2_comp(:,:)=mask(sst2_comp(:,:),mas2(:,:).eq.1,True)
mas3(:,:)=landsea_mask(mas3(:,:),sst3_comp&lat,sst3_comp&lon)
sst3_comp(:,:)=mask(sst3_comp(:,:),mas3(:,:).eq.1,True)
mas4(:,:)=landsea_mask(mas4(:,:),sst4_comp&lat,sst4_comp&lon)
sst4_comp(:,:)=mask(sst4_comp(:,:),mas4(:,:).eq.1,True)



wks=gsn_open_wks("pdf","El nino year anomaly in a year")
gsn_define_colormap(wks,"BlAqGrYeOrRe")

base=new(4,"graphic")
plot=new(4,"graphic")


res=True
res@gsnAddCyclic=True
res@gsnDraw=True
res@gsnFrame=True
res@gsnLeftString=""
res@gsnRightString=""

resc=res
resv=res
rest=res

res@mpFillOn=False
res@mpCenterLonF=180
res@mpGeophysicalLineThicknessF=0.5
res@pmTickMarkDisplayMode="Always"
res@mpGridAndLimbOn=True
res@mpGridLatSpacingF=15
res@mpGridLonSpacingF=15
res@mpGridLineDashPattern=2
res@mpGridLineThicknessF=0.5

;--------------海表面温度填图-----------------------------

res@cnLevelSelectionMode="AutomaticLevels"
;resc@cnLevels=(/-0.75,-0.25,0.25,0.75,1.25/)
res@vpHeightF=0.4
res@vpWidthF=0.8
res@vpXF=0.1
res@vpYF=0.7

res@cnFillOn=True
res@cnLinesOn=False

res@gsnSpreadColors=True
res@lbLabelAutoStride=True


;---------显著性检验填图----------------------------------
resc@cnFillOn=True
resc@cnLinesOn=True
resc@cnLineColor="black"
resc@cnLineThicknessF=0.7
resc@cnLineLabelsOn=True


resc@cnLevelSelectionMode="ExplicitLevels"
resc@cnLevels=(/0.01,0.05/)
resc@cnFillPalette="GMT_gray"
resc@cnFillColors=(/5,7,-1/)
resc@cnFillPattern=17
resc@cnFillScaleF=0.5
resc@cnInfoLabelOn=False
resc@lbLabelBarOn=False

resv@vpHeightF=0.4
resv@vpWidthF=0.8
resv@vpXF=0.1
resv@vpYF=0.7
resv@vcPositionMode="ArrowTail"
resv@vcGlyphStyle="Fillarrow"
resv@vcFillArrowEdgeThicknessF=2
resv@vcFillArrowEdgeColor="white"
resv@vcFillArrowFillColor="black"
resv@vcFillArrowWidthF=0.05
resv@vcFillArrowHeadXF=0.2
resv@vcFillArrowHeadYF=0.05
resv@vcFillArrowHeadInteriorXF=0.2
resv@vcMinDistanceF=0.01
resv@vcMinMagnitudeF=0.02

resv@vcRefAnnoOn=True

resv1=resv
resv2=resv

resv1@vcRefMagnitudeF=refmag1
resv1@vcRefLengthF=0.045
resv1@vcRefAnnoBackgroundColor="white"
resv1@vcRefAnnoPerimOn=False
resv1@vcRefAnnoFontHeightF=0.015
resv1@vcRefAnnoString1On=False
resv1@vcRefAnnoString2On=True
resv1@vcRefAnnoString2=refmag1+"m/s"
;resv1@vcRefAnnoSide="Top"
resv1@vcRefAnnoOrthogonalPosF=-1.6
resv1@vcRefAnnoParallelPosF=0.95

resv2@vcRefMagnitudeF=refmag2
resv2@vcRefLengthF=0.045
resv2@vcRefAnnoBackgroundColor="white"
resv2@vcRefAnnoPerimOn=False
resv2@vcRefAnnoFontHeightF=0.015
resv2@vcRefAnnoString1On=False
resv2@vcRefAnnoString2On=True
resv2@vcRefAnnoString2=refmag2+"m/s"
;resv2@vcRefAnnoSide="Top"
resv2@vcRefAnnoOrthogonalPosF=-1.6
resv2@vcRefAnnoParallelPosF=0.95



res@gsnCenterStringFontHeightF=0.03

res1=res
res2=res
res3=res
res4=res

res1@gsnCenterString="sst-wind-850hPa-JJA"
res2@gsnCenterString="sst-wind-850hPa-DJF"
res3@gsnCenterString="sst-wind-200hPa-JJA"
res4@gsnCenterString="sst-wind-200hPa-DJF"



base(0)=gsn_csm_contour_map(wks,sst1_comp,res1)
base(1)=gsn_csm_contour_map(wks,sst2_comp,res2)
base(2)=gsn_csm_contour_map(wks,sst3_comp,res3)
base(3)=gsn_csm_contour_map(wks,sst4_comp,res4)
plot(0)=gsn_csm_contour(wks,confi_sst1,resc)
plot(1)=gsn_csm_contour(wks,confi_sst2,resc)
plot(2)=gsn_csm_contour(wks,confi_sst3,resc)
plot(3)=gsn_csm_contour(wks,confi_sst4,resc)

plot(0)=ColorNegDashZeroPosContour(plot(0),"blue","white","red")
overlay(base(0),plot(0))

plot(1)=ColorNegDashZeroPosContour(plot(1),"blue","white","red")
overlay(base(1),plot(1))

plotv1=gsn_csm_vector(wks,u1_comp,v1_comp,resv1)
overlay(base(0),plotv1)

plotv2=gsn_csm_vector(wks,u2_comp,v2_comp,resv1)
overlay(base(1),plotv2)

plot(2)=ColorNegDashZeroPosContour(plot(2),"blue","white","red")
overlay(base(2),plot(2))

plot(3)=ColorNegDashZeroPosContour(plot(3),"blue","white","red")
overlay(base(3),plot(3))

plotv3=gsn_csm_vector(wks,u3_comp,v3_comp,resv2)
overlay(base(2),plotv3)

plotv4=gsn_csm_vector(wks,u4_comp,v4_comp,resv2)
overlay(base(3),plotv4)

resP=True
resP@txString="198112-201711 NOAA OI SST V2"

resP@txFontHeightF=0.03

resP@gsnPanelFigureStringsFontHeightF=0.015
resP@amJust="TopLeft"

resP@gsnPanelRowSpec=True
gsn_panel(wks,base,(/2,2/),resP)


end

海温与风场不匹配

海温与风场不匹配

El nino year anomaly in a year.pdf

3.14 MB, 下载次数: 3, 下载积分: 金钱 -5

panel.ncl

10.14 KB, 下载次数: 3, 下载积分: 金钱 -5

脚本

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-9-27 10:42:43 | 显示全部楼层
本帖最后由 林明宇 于 2018-9-27 10:47 编辑

请问风场箭头用哪个函数可以不被遮盖呀?

El nino year anomaly in a year.pdf

3.13 MB, 下载次数: 0, 下载积分: 金钱 -5

风场箭头互相遮挡

密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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