; Julia 29/10/2013: this script loads in the yearly data files and produces yearly time series data 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/wrf/WRFUserARW.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" begin ;---------------INPUTS------------------------------------- name = "ERA" file_suffix = "tzadjust" domain = "d03" domain2 = "d02" filo = name + "_" + domain + "_clim_means.nc" diro = "Processed/" diro_bom = "/group/y98/julia/BOM/Processed/" files_input_era = systemfunc("ls " + diro + name + "_" + domain + "_*_tzadjust.nc") files_input_era2 = systemfunc("ls " + diro + name + "_" + domain2 + "_*_tzadjust.nc") files_input_bom = systemfunc("ls " + diro_bom + "BOM_" + domain + "_*.nc") x = 100 y = 100 x2 = 125 y2 = 160 ;------load yearly files --------------- f_era = addfiles(files_input_era + ".nc", "r") ListSetType (f_era, "cat") f_era2 = addfiles(files_input_era2 + ".nc", "r") ListSetType (f_era2, "cat") f_bom = addfiles(files_input_bom + ".nc", "r") ListSetType (f_bom, "cat") ; -------- now extract the vairables we need TMAX_mean_era = f_era[:]->TMAX_mean TMIN_mean_era = f_era[:]->TMIN_mean PPT_mean_era = f_era[:]->PPT_mthly TMAX_mean_era2 = f_era2[:]->TMAX_mean TMIN_mean_era2 = f_era2[:]->TMIN_mean PPT_mean_era2 = f_era2[:]->PPT_mthly TMAX_mean_bom = f_bom[:]->TMAX_mean TMIN_mean_bom = f_bom[:]->TMIN_mean PPT_mean_bom = f_bom[:]->PPT_mthly delete(f_bom) delete(f_era) delete(f_era2) ;get a landmask and some other stuff from a wrfout file ; load a wrfout file to get land-mask info out f = addfile("/scratch/y98/julia/WRF-CLIM/Era-Int/wrfout_" + domain + ".nc","r") f2 = addfile("/scratch/y98/julia/WRF-CLIM/Era-Int/wrfout_" + domain2 + ".nc","r") landmask = wrf_user_getvar(f,"LANDMASK",0) landmask2 = wrf_user_getvar(f2,"LANDMASK",0) ;dsizes_array = dimsizes(land_mask) ; also get some map info for later on truelat13 = f@TRUELAT1 truelat23 = f@TRUELAT2 cen_lon3= f@CEN_LON cen_lat3 = f@CEN_LAT wrf_lat2d3 = f->XLAT(0,:,:) wrf_lon2d3 = f->XLONG(0,:,:) latr3 = wrf_lat2d3 lonr3 = wrf_lon2d3 truelat12 = f2@TRUELAT1 truelat22 = f2@TRUELAT2 cen_lon2= f2@CEN_LON cen_lat2 = f2@CEN_LAT wrf_lat2d2 = f2->XLAT(0,:,:) wrf_lon2d2 = f2->XLONG(0,:,:) latr2 = wrf_lat2d2 lonr2 = wrf_lon2d2 ;mask water and remove relaxation zone dsizes_array = dimsizes(landmask) dsizes_array2 = dimsizes(landmask2) landmask_nr = landmask(10:(dsizes_array(0)-11),10:(dsizes_array(1)-11)) landmask_nr2 = landmask2(10:(dsizes_array2(0)-11),10:(dsizes_array2(1)-11)) lon3 = lonr3(10:(dsizes_array(0)-11),10:(dsizes_array(1)-11)) lat3 = latr3(10:(dsizes_array(0)-11),10:(dsizes_array(1)-11)) lon2 = lonr2(10:(dsizes_array2(0)-11),10:(dsizes_array2(1)-11)) lat2 = latr2(10:(dsizes_array2(0)-11),10:(dsizes_array2(1)-11)) dsizes_landmask_nr = dimsizes(landmask_nr) print(dsizes_landmask_nr) print(dimsizes(TMAX_mean_bom)) print(dimsizes(TMAX_mean_era)) lat2_limit = lat2(45:94,71:120) lon2_limit = lon2(45:94,71:120) ; we need to remove the relaxation zone from the BOM data too TMAX_mean_bom_nr = TMAX_mean_bom(:,10:(dsizes_array(0)-11),10:(dsizes_array(1)-11)) TMIN_mean_bom_nr = TMIN_mean_bom(:,10:(dsizes_array(0)-11),10:(dsizes_array(1)-11)) PPT_mean_bom_nr = PPT_mean_bom(:,10:(dsizes_array(0)-11),10:(dsizes_array(1)-11)) printVarSummary(landmask_nr2) printVarSummary(TMAX_mean_era2) print("Tmax_mean_bom") print(dimsizes(TMAX_mean_bom_nr)) tmax_era_mask = mask(TMAX_mean_era,landmask_nr,1) tmin_era_mask = mask(TMIN_mean_era,landmask_nr,1) ppt_era_mask = mask(PPT_mean_era,landmask_nr,1) tmax_era_mask2 = mask(TMAX_mean_era2,landmask_nr2,1) tmin_era_mask2 = mask(TMIN_mean_era2,landmask_nr2,1) ppt_era_mask2 = mask(PPT_mean_era2,landmask_nr2,1) tmax_bom_mask = mask(TMAX_mean_bom_nr,landmask_nr,1) tmin_bom_mask = mask(TMIN_mean_bom_nr,landmask_nr,1) ppt_bom_mask = mask(PPT_mean_bom_nr,landmask_nr,1) delete(TMAX_mean_era) delete(TMIN_mean_era) delete(PPT_mean_era) delete(TMAX_mean_bom) delete(TMIN_mean_bom) delete(PPT_mean_bom) delete(TMAX_mean_bom_nr) delete(TMIN_mean_bom_nr) delete(PPT_mean_bom_nr) tmax_era_mask2_limit = tmax_era_mask2(:,45:94,71:120) tmin_era_mask2_limit = tmin_era_mask2(:,45:94,71:120) ppt_era_mask2_limit = ppt_era_mask2(:,45:94,71:120) ;we are working out the standards deviation for temps and ppt spatially std_tmax_bom = dim_stddev_n(tmax_bom_mask,0) std_tmax_era_d03 = dim_stddev_n(tmax_era_mask,0) std_tmax_era_d02 = dim_stddev_n(tmax_era_mask2_limit,0) std_tmin_bom = dim_stddev_n(tmin_bom_mask,0) std_tmin_era_d03 = dim_stddev_n(tmin_era_mask,0) std_tmin_era_d02 = dim_stddev_n(tmin_era_mask2_limit,0) std_ppt_bom = dim_stddev_n(ppt_bom_mask,0) std_ppt_era_d03 = dim_stddev_n(ppt_era_mask,0) std_ppt_era_d02 = dim_stddev_n(ppt_era_mask2_limit,0) ave_tmax_bom = dim_avg_n(tmax_bom_mask,(/1,2/)) d03_ave_tmax_era = dim_avg_n(tmax_era_mask,(/1,2/)) d02_ave_tmax_era = dim_avg_n(tmax_era_mask2_limit,(/1,2/)) ave_tmin_bom = dim_avg_n(tmin_bom_mask,(/1,2/)) d03_ave_tmin_era = dim_avg_n(tmin_era_mask,(/1,2/)) d02_ave_tmin_era = dim_avg_n(tmin_era_mask2_limit,(/1,2/)) ave_ppt_bom = dim_avg_n(ppt_bom_mask,(/1,2/)) d03_ave_ppt_era = dim_avg_n(ppt_era_mask,(/1,2/)) d02_ave_ppt_era = dim_avg_n(ppt_era_mask2_limit,(/1,2/)) ; seasonal data looks less busy than monthly data but now I am looking at a yearly time series, because this will eliminate hte intraannual variability, which the model seems to be picking up well (except for rangelands ppt) annual_tmax_bom = month_to_annual(ave_tmax_bom,1) annual_tmin_bom = month_to_annual(ave_tmin_bom,1) annual_ppt_bom = month_to_annual(ave_ppt_bom,0) d03_annual_tmax_era = month_to_annual(d03_ave_tmax_era,1) d03_annual_tmin_era = month_to_annual(d03_ave_tmin_era,1) d03_annual_ppt_era = month_to_annual(d03_ave_ppt_era,0) d02_annual_tmax_era = month_to_annual(d02_ave_tmax_era,1) d02_annual_tmin_era = month_to_annual(d02_ave_tmin_era,1) d02_annual_ppt_era = month_to_annual(d02_ave_ppt_era,0) ; now we want to look at mean anomaly ; now work out the climatological mean mean_tmax_bom = dim_avg(annual_tmax_bom) mean_tmin_bom = dim_avg(annual_tmin_bom) mean_ppt_bom = dim_avg(annual_ppt_bom) d03_mean_tmax_era = dim_avg(d03_annual_tmax_era) d03_mean_tmin_era = dim_avg(d03_annual_tmin_era) d03_mean_ppt_era = dim_avg(d03_annual_ppt_era) d02_mean_tmax_era = dim_avg(d02_annual_tmax_era) d02_mean_tmin_era = dim_avg(d02_annual_tmin_era) d02_mean_ppt_era = dim_avg(d02_annual_ppt_era) anom_annual_ppt = new((/3,dimsizes(annual_tmax_bom)/),float) anom_annual_tmax = new((/3,dimsizes(annual_tmax_bom)/),float) anom_annual_tmin = new((/3,dimsizes(annual_tmin_bom)/),float) anom_annual_ppt(0,:) = annual_ppt_bom - mean_ppt_bom anom_annual_ppt(1,:) = d03_annual_ppt_era - d03_mean_ppt_era anom_annual_ppt(2,:) = d02_annual_ppt_era - d02_mean_ppt_era anom_annual_tmax(0,:) = annual_tmax_bom - mean_tmax_bom anom_annual_tmax(1,:) = d03_annual_tmax_era - d03_mean_tmax_era anom_annual_tmax(2,:) = d02_annual_tmax_era - d02_mean_tmax_era anom_annual_tmin(0,:) = annual_tmin_bom - mean_tmin_bom anom_annual_tmin(1,:) = d03_annual_tmin_era - d03_mean_tmin_era anom_annual_tmin(2,:) = d02_annual_tmin_era - d02_mean_tmin_era months = ispan(1981,2009,1) bom_ppt_rcoef = regCoef(months,annual_ppt_bom) print("ppt bom correlation") print(bom_ppt_rcoef) era_ppt_rcoef = regCoef(months,d03_annual_ppt_era) print("ppt era correlation") print(era_ppt_rcoef) bom_tmax_rcoef = regCoef(months,anom_annual_tmax(0,:)) print("tmax correlation") print(bom_tmax_rcoef) ; ok so now we are actually ready to start plotting, 2 separate plots ; *************** PPT ************************************************ wks = gsn_open_wks ("pdf","Plot/ppt_annual") res = True ; plot mods desired res@xyDashPatterns = (/0,0,14/) ; Make curves all solid res@xyLineThicknesses = (/2.0,2.0,2.0,2.0,2.0,2.0/) res@pmLegendDisplayMode = "Always" ; turn on legend res@pmLegendSide = "Top" ; Change location of res@pmLegendParallelPosF = .15 ; move units right res@pmLegendOrthogonalPosF = -0.53 ; move units down res@pmLegendWidthF = 0.1 ; Change width and res@pmLegendHeightF = 0.11 ; height of legend. res@lgPerimOn = False ; turn off box around res@lgLabelFontHeightF = .015 ; label font height res@xyExplicitLegendLabels = (/" OBS"," W5k"," W10k"/) ; create explicit labels res@tmYRBorderOn = False ; turn off right border res@tmYLBorderOn = False ; turn off left border ;res@tmYROn = False ; no YR tick marks ;res@tmXTOn = False ; no YR tick marks ;res@tmXTBorderOn = False ; turn off top border ;res@tmXTOn = False ; no XT tick marks res@gsnFrame = False ; don't advance frame yet res@vpHeightF = 0.3 ; change aspect ratio of plot res@vpWidthF = 0.5 res@trYMinF = -150 ; min value on y-axis res@trYMaxF = 250 ; max value on y-axis res@vpXF = 0.1 ; start plot at x ndc coord res@xyLineColors = (/"blue","red","red"/) ; change line color res@gsnYRefLine = 0.0 ; create a reference linei res@tiMainString = "" res@tiYAxisString = "PPT Anomaly (mm year~S~-1~N~)" res@tiXAxisString = "Year" plot = gsn_csm_xy (wks,months,anom_annual_ppt,res) ; create plot delete(wks) delete(plot) delete(res@trYMinF) delete(res@trYMaxF) delete(res@xyLineColors) delete(res@xyDashPatterns) ; *************** TEMPS ************************************************ wks = gsn_open_wks ("pdf","Plot/tmax_annual") res = True ; plot mods desired res@xyDashPatterns = (/0,0,14,0,0,5/) ; Make curves all solid res@xyLineColors = (/"blue","red","red","blue","red","red"/) ; change line color res@gsnFrame = False ; don't advance frame yet res@trYMinF = -1.5 ; min value on y-axis res@trYMaxF = 2.5 ; max value on y-axis res@tiMainString = "(a) Maximum Temperature Anomaly" res@tiYAxisString = "Temperature (~S~o~N~C)" plot = gsn_csm_xy (wks,months,anom_annual_tmax,res) ; create plot delete(wks) delete(plot) wks = gsn_open_wks ("pdf","Plot/tmin_annual") res = True ; plot mods desired res@xyDashPatterns = (/0,0,14,0,0,5/) ; Make curves all solid res@xyLineColors = (/"blue","red","red","blue","red","red"/) ; change line color res@gsnFrame = False ; don't advance frame yet res@trYMinF = -1.5 ; min value on y-axis res@trYMaxF = 2.5 ; max value on y-axis res@tiMainString = "(b) Minimum Temperature Anomaly" res@tiYAxisString = "Temperature (~S~o~N~C)" plot = gsn_csm_xy (wks,months,anom_annual_tmin,res) ; create plot delete(wks) delete(plot) ;**************now we are plotting spatial stddev******************* pole_lat1 = 60.31 pole_lon1 = 321.38 ;;convert lon to be 0->360 not -180->180 lon2_limit = where(lon2_limit.lt.0,360.+lon2_limit,lon2_limit) lon3 = where(lon3.lt.0,360.+lon3,lon3) dsizes_2 = dimsizes(lon2_limit) dsizes_3 = dimsizes(lon3) nlat2 = dsizes_2(0) nlon2 = dsizes_2(1) nlat3 = dsizes_3(0) nlon3 = dsizes_3(1) type = "pdf" wks_ppt = gsn_open_wks(type,"Plot/ppt_std") wks_tmax = gsn_open_wks(type,"Plot/tmax_std") wks_tmin = gsn_open_wks(type,"Plot/tmin_std") gsn_define_colormap(wks_ppt,"BlGrYeOrReVi200") gsn_define_colormap(wks_tmax,"BlGrYeOrReVi200") gsn_define_colormap(wks_tmin,"BlGrYeOrReVi200") res2 = True ;define projection parameters res2@mpProjection = "CylindricalEquidistant" res2@mpCenterRotF = -3. res2@mpCenterLatF = pole_lat1-90.0 res2@mpCenterLonF = pole_lon1-180.0 res2@mpOutlineDrawOrder = "PostDraw" ; force map tp be drawn 1st res2@mpGridLineDashPattern = 2 ; lat/lon lines as dashed res2@mpPerimOn = True res2@mpPerimDrawOrder = "PostDraw" res2@mpOutlineOn = True res2@mpGridAndLimbOn = True res2@mpGridSpacingF = 10. res2@pmTickMarkDisplayMode = "Always" res2@tmXTLabelsOn = False res2@tmYRLabelsOn = False res2@tmXBOn = False res2@tmXTOn = False res2@tmYLOn = False res2@tmYROn = False res2@mpOutlineBoundarySets = "National" res2@mpGeophysicalLineThicknessF = 1.5 res2@mpDataBaseVersion = "MediumRes" res2@mpDataSetName = "Earth..4" res2@mpOutlineSpecifiers = "Australia:states" res2@mpFillOn = True ;some more basic plot aspects res2@cnLinesOn = False ; no lines on contour plot res2@cnFillOn = True ; fill map with color res2@cnLineLabelsOn = False ; no line label res2@gsnSpreadColors = True ; use full spread of color-bar res2@mpGridLatSpacingF = 10 ; grid line spacing on plot res2@mpGridLonSpacingF = 10 res2@pmTickMarkDisplayMode = "Always" ; display tick marks res2@tmXTLabelsOn = False ; turn off tick-marks labels at top of plot res2@tmYRLabelsOn = False ; trun off tick-marks labels at right of plot res2@tmXTOn = False ; turn off top tick marks res2@tmYROn = False; turn off right tick marks res2@mpGridAndLimbOn = True ; set to true if you want grid lines to show res2@mpGridLineDashPattern = 2 ; make grid lines dash res2@mpGridLineColor = "black" ; grid line color black res2@mpGeophysicalLineThicknessF = 1.5 res2@cnLevelSelectionMode = "ManualLevels" res2@cnMaxLevelValF = 100. res2@cnMinLevelValF = 10. res2@cnLevelSpacingF = 10. res2@lbLabelBarOn = False res2@tfDoNDCOverlay = True ; this is necessary since grid is already native ; define corners of plot, since we are not plotting whole grid (not plotting over ocean) res2@mpLimitMode = "Corners" res2@mpLeftCornerLatF = lat2_limit(0,0) res2@mpLeftCornerLonF = lon2_limit(0,0) res2@mpRightCornerLatF = lat2_limit(nlat2-1,nlon2-1) res2@mpRightCornerLonF = lon2_limit(nlat2-1,nlon2-1) res2@gsnDraw = False res2@gsnFrame = False res3 = True ;define projection parameters res3@mpProjection = "CylindricalEquidistant" res3@mpCenterRotF = -3. res3@mpCenterLatF = pole_lat1-90.0 res3@mpCenterLonF = pole_lon1-180.0 res3@mpOutlineDrawOrder = "PostDraw" ; force map tp be drawn 1st res3@mpGridLineDashPattern = 2 ; lat/lon lines as dashed res3@mpPerimOn = True res3@mpPerimDrawOrder = "PostDraw" res3@mpOutlineOn = True res3@mpGridAndLimbOn = True res3@mpGridSpacingF = 10. res3@pmTickMarkDisplayMode = "Always" res3@tmXTLabelsOn = False res3@tmYRLabelsOn = False res3@tmXBOn = False res3@tmXTOn = False res3@tmYLOn = False res3@tmYROn = False res3@mpOutlineBoundarySets = "National" res3@mpGeophysicalLineThicknessF = 1.5 res3@mpDataBaseVersion = "MediumRes" res3@mpDataSetName = "Earth..4" res3@mpOutlineSpecifiers = "Australia:states" res3@mpFillOn = True ;some more basic plot aspects res3@cnLinesOn = False ; no lines on contour plot res3@cnFillOn = True ; fill map with color res3@cnLineLabelsOn = False ; no line label res3@gsnSpreadColors = True ; use full spread of color-bar res3@mpGridLatSpacingF = 10 ; grid line spacing on plot res3@mpGridLonSpacingF = 10 res3@pmTickMarkDisplayMode = "Always" ; display tick marks res3@tmXTLabelsOn = False ; turn off tick-marks labels at top of plot res3@tmYRLabelsOn = False ; trun off tick-marks labels at right of plot res3@tmXTOn = False ; turn off top tick marks res3@tmYROn = False; turn off right tick marks res3@mpGridAndLimbOn = True ; set to true if you want grid lines to show res3@mpGridLineDashPattern = 2 ; make grid lines dash res3@mpGridLineColor = "black" ; grid line color black res3@mpGeophysicalLineThicknessF = 1.5 res3@cnLevelSelectionMode = "ManualLevels" res3@cnMaxLevelValF = 100. res3@cnMinLevelValF = 10. res3@cnLevelSpacingF = 10. res3@lbLabelBarOn = False res3@tfDoNDCOverlay = True ; this is necessary since grid is already native ; define corners of plot, since we are not plotting whole grid (not plotting over ocean) res3@mpLimitMode = "Corners" res3@mpLeftCornerLatF = lat3(0,0) res3@mpLeftCornerLonF = lon3(0,0) res3@mpRightCornerLatF = lat3(nlat3-1,nlon3-1) res3@mpRightCornerLonF = lon3(nlat3-1,nlon3-1) res3@gsnDraw = False res3@gsnFrame = False ;plot PPT std dev plot_ppt_std = new(3,graphic) plot_ppt_std(0) = gsn_csm_contour_map(wks_ppt,std_ppt_era_d02,res2) plot_ppt_std(1) = gsn_csm_contour_map(wks_ppt,std_ppt_era_d03,res3) plot_ppt_std(2) = gsn_csm_contour_map(wks_ppt,std_ppt_bom,res3) ; now put 3 plots in panel resP = True resP@gsnPanelLabelBar = True ; put panel lable bar on (don't use this if still trying to figure out scale) resP@txString = "" ; panel figure title ;resP@txFontHeightF = 0.035 resP@gsnPanelFigureStrings = (/"W10k","W5k","OBS"/) ; text-box to go on plots showing season resP@gsnPanelFigureStringsFontHeightF = 0.018 resP@lbTitleString = "(mm year~S~-1~N~)" resP@lbTitlePosition = "Bottom" resP@pmLabelBarOrthogonalPosF = -0.025 resP@lbTitleFontHeightF = 0.02 ;resP@pmLabelBarWidthF = 1.0 ;resP@amJust = "BottomLeft" ; put text-box bottom left gsn_panel(wks_ppt,plot_ppt_std,(/1,3/),resP) ; make panel plot delete(resP) ;**TMAX** ; define label bar properties res2@lbLabelBarOn = False ; Turn off label bar for individual plot, NOTE: set this to true if you are trying to figure out the scale ; set colorbar manually res2@cnLevelSelectionMode = "ManualLevels" res2@cnMinLevelValF = 3 res2@cnMaxLevelValF = 7 res2@cnLevelSpacingF = 1 ; define label bar properties res3@lbLabelBarOn = False ; Turn off label bar for individual plot, NOTE: set this to true if you are trying to figure out the scale ; set colorbar manually res3@cnLevelSelectionMode = "ManualLevels" res3@cnMinLevelValF = 3 res3@cnMaxLevelValF = 7 res3@cnLevelSpacingF = 1 plot_tmax_std = new(3,graphic) plot_tmax_std(0) = gsn_csm_contour_map(wks_tmax,std_tmax_era_d02,res2) plot_tmax_std(1) = gsn_csm_contour_map(wks_tmax,std_tmax_era_d03,res3) plot_tmax_std(2) = gsn_csm_contour_map(wks_tmax,std_tmax_bom,res3) ; now put 3 plots in panel resP = True resP@gsnPanelLabelBar = True ; put panel lable bar on (don't use this if still trying to figure out scale) resP@txString = "(a) Maximum Temperature" ; panel figure title ;resP@txFontHeightF = 0.035 resP@gsnPanelFigureStrings = (/"W10k","W5k","OBS"/) ; text-box to go on plots showing season resP@gsnPanelFigureStringsFontHeightF = 0.014 resP@lbTitleString = "Standard Deviation (~S~o~N~C)" resP@lbTitlePosition = "Bottom" resP@pmLabelBarOrthogonalPosF = -0.025 resP@lbTitleFontHeightF = 0.02 ;resP@pmLabelBarWidthF = 1.0 ;resP@amJust = "BottomLeft" ; put text-box bottom left gsn_panel(wks_tmax,plot_tmax_std,(/1,3/),resP) ; make panel plot delete(resP) ;**TMIN** ; define label bar properties res2@lbLabelBarOn = False ; Turn off label bar for individual plot, NOTE: set this to true if you are trying to figure out the scale ; set colorbar manually res2@cnLevelSelectionMode = "ManualLevels" res2@cnMinLevelValF = 3 res2@cnMaxLevelValF = 7 res2@cnLevelSpacingF = 1 ; define label bar properties res3@lbLabelBarOn = False ; Turn off label bar for individual plot, NOTE: set this to true if you are trying to figure out the scale ; set colorbar manually res3@cnLevelSelectionMode = "ManualLevels" res3@cnMinLevelValF = 3 res3@cnMaxLevelValF = 7 res3@cnLevelSpacingF = 1 plot_tmin_std = new(3,graphic) plot_tmin_std(0) = gsn_csm_contour_map(wks_tmin,std_tmin_era_d02,res2) plot_tmin_std(1) = gsn_csm_contour_map(wks_tmin,std_tmin_era_d03,res3) plot_tmin_std(2) = gsn_csm_contour_map(wks_tmin,std_tmin_bom,res3) ; now put 3 plots in panel resP = True resP@gsnPanelLabelBar = True ; put panel lable bar on (don't use this if still trying to figure out scale) resP@txString = "(b) Minimum Temperature" ; panel figure title ;resP@txFontHeightF = 0.035 resP@gsnPanelFigureStrings = (/"W10k","W5k","OBS"/) ; text-box to go on plots showing season resP@gsnPanelFigureStringsFontHeightF = 0.014 resP@lbTitleString = "Standard Deviation (~S~o~N~C)" resP@lbTitlePosition = "Bottom" resP@pmLabelBarOrthogonalPosF = -0.025 resP@lbTitleFontHeightF = 0.02 ;resP@pmLabelBarWidthF = 1.0 ;resP@amJust = "BottomLeft" ; put text-box bottom left gsn_panel(wks_tmin,plot_tmin_std,(/1,3/),resP) ; make panel plot delete(resP) end