[ncl-talk] Average Spatial Correlations
Melissa Lazenby
M.Lazenby at sussex.ac.uk
Mon Jun 13 09:15:02 MDT 2016
Dear NCL Users
I am wanting to create 1 plot of averaged spatial correlations.
I currently have 40 global spatial correlation plots but would like to average those all out to 1 global plot with the overall average spatial correlations at each gridpoint.
I am not sure whether to use the average function or to sum them up first and divide by 40.
Your help would be very much appreciated.
Below is the code I am trying to create this average plot from.
Kindest Regards
Melissa
; ==============================================================
; eof_1.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
; ==============================================================
; User defined parameters that specify region of globe and
; ==============================================================
latS = -40.
latN = 0.
lonL = 10.
lonR = 60.
yrStrt = 1975
yrLast = 2004
season = "DJF" ; choose Dec-Jan-Feb seasonal mean
neof = 1 ; number of EOFs
optEOF = True
optEOF at jopt = 0 ; This is the default; most commonly used; no need to specify.
optETS = False
model = (/"ACCESS1-0","ACCESS1-3","bcc-csm1-1","bcc-csm1-1-m","BNU-ESM","CanESM2","CCSM4","CESM1-BGC","CESM1-CAM5","CESM1-FASTCHEM","CESM1-WACCM","CMCC-CESM","CMCC-CM","CMCC-CMS","CNRM-CM5","CSIRO-Mk3-6-0","EC-EARTH","FGOALS-g2","GFDL-CM3","GFDL-ESM2G","GFDL-ESM2M","GISS-E2-H","GISS-E2-H-CC","GISS-E2-R","GISS-E2-R-CC","HadGEM2-AO","HadGEM2-CC","HadGEM2-ES","inmcm4","IPSL-CM5A-LR","IPSL-CM5A-MR","IPSL-CM5B-LR","MIROC5","MIROC-ESM","MIROC-ESM-CHEM","MPI-ESM-LR","MPI-ESM-MR","MPI-ESM-P","MRI-CGCM3","NorESM1-M","NorESM1-ME"/)
wks = gsn_open_wks("X11","ALL_40_MMM_Eof_cor_SST") ; specifies a plot
gsn_define_colormap(wks,"ncl_default") ; choose color map
plot = new (dimsizes(model),"graphic")
do gg = 0,dimsizes(model)-1
; read in model data
in=addfile("/mnt/geog/ml382/melphd/eof_sicz/eof90models/pr_"+model(gg)+"_eof_DJF_Anom.nc","r")
lat = in->lat
lon = in->lon
time = in->time
YYYY = cd_calendar(time,-1)/100 ; entire file
iYYYY = ind(YYYY.ge.yrStrt .and. YYYY.le.yrLast)
if((gg.eq.19) .or. (gg.eq.20)) then ;(gg.eq.17) .or.
PR = in->pr(iYYYY,:,:)
else
PR = in->pr(iYYYY,0,:,:)
end if
;
nyrs = dimsizes(PR&time)
; =================================================================
; normalize data at each gridpoint by local standard deviation at each grid pt
; =================================================================
PR = dim_standardize_n(PR,1,0)
; =================================================================
; Reorder (lat,lon,time) the *weighted* input data
; Access the area of interest via coordinate subscripting
; =================================================================
x = PR({lat|latS:latN},{lon|lonL:lonR},time|:)
eof = eofunc_Wrap(x, neof, optEOF)
eof_ts = eofunc_ts_Wrap (x, eof, optEOF)
printVarSummary( eof ) ; examine EOF variables
printVarSummary( eof_ts )
; =================================================================
; Extract the YYYYMM from the time coordinate
; associated with eof_ts [same as SLP&time]
; =================================================================
yyyymm = cd_calendar(eof_ts&time,-2)/100
; ==============================================================
; Open the file: Read only the user specified period
; ==============================================================
s = addfile ("/mnt/nfs2/geog/ml382/melphd/global/sstmodel90/tos_Omon_"+model(gg)+"_historical_safrica_climDJF.nc", "r")
TIME1 = s->time
YYYYZ = cd_calendar(TIME1,-1)/100 ; entire file
iYYYYZ = ind(YYYYZ.ge.yrStrt .and. YYYYZ.le.yrLast)
sst = s->tos(iYYYYZ,:,:)
printVarSummary(sst)
sst1 =sst(:,:,:)
printVarSummary(eof_ts) ; variable overview
eof1 = eof_ts(0,:)
sst1 = lonFlip(sst1)
; =================================================================
; Reorder (latitude,longitude,time) the *weighted* input data
; Access the area of interest via coordinate subscripting
; =================================================================
q = eof_ts(0,:)
y = sst1(lat|:,lon|:,time|:)
y&lat at units = "degrees_north"
y&lon at units = "degrees_east"
x&lat at units = "degrees_north"
x&lon at units = "degrees_east"
printVarSummary(q)
printVarSummary(y)
ccr = escorc(q, y)
printVarSummary(ccr)
ccr!0 = "lat" ; name dimensions
ccr!1 = "lon"
ccr&lat = y&lat ; assign coordinate values and
ccr&lon = y&lon ; units attributes
printVarSummary(ccr)
;ensccrdimavg = dim_avg_Wrap( ccr(lat|:, lon|:)
ensccr = new((/dimsizes(lat),dimsizes(lon)/), typeof(ccr))
;ensccr!0="lat"
;ensccr&lat=lat
;ensccr!1="lon"
;ensccr&lon=lon
;ensccr(gg) = ensccrsum
;ensccrsum(gg) = sum( ccr(lat|:, lon|: ))
;ensccr = ensccrsum / 40
ensccr = dim_avg_n_Wrap(ccr,0)
ensccr!0 = "lat" ; name dimensions
ensccr!1 = "lon"
ensccr&lat = lat ; assign coordinate values and
ensccr&lon = lon ; units attributes
printVarSummary(ensccr)
;============================================================
; PLOT
;============================================================
;*******************************************
; first plot
;*******************************************
rescn = True
rescn at cnFillOn = True
rescn at cnLinesOn = False ; True is default
rescn at gsnDraw = False ; don't draw
rescn at gsnFrame = False ; don't advance frame
rescn at cnLineLabelsOn = False ; True is default
rescn at lbLabelBarOn = False ; turn off individual lb's
rescn at cnLevelSelectionMode = "ManualLevels" ; set manual contour levels
rescn at cnMinLevelValF = -0.5 ; set min contour level
rescn at cnMaxLevelValF = 0.5 ; set max contour level
rescn at cnLevelSpacingF = 0.1 ; set contour spacing
;rescn at lbOrientation = "Vertical" ; vertical label bar
rescn at tiMainString = ""+model(gg)+""
;---This resource defaults to True in NCL V6.1.0
rescn at lbLabelAutoStride = True ; optimal label stride
rescn at gsnSpreadColors = True ; use full range of colors
rescn at mpCenterLonF = 180. ; center plot at 180
rescn at lbLabelFontHeightF = 0.015
rescn at gsnAddCyclic = True
; reverse the first two colors
setvalues wks
"wkColorMap" : "ncl_default"
"wkForegroundColor" : (/0.,0.,0./)
"wkBackgroundColor" : (/1.,1.,1./)
end setvalues
end do
plot = gsn_csm_contour_map(wks,ensccr,rescn)
draw(plot)
frame(wks)
end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20160613/18a949e3/attachment.html
More information about the ncl-talk
mailing list