s2dverification (version 2.8.6)

AnimateMap: Animate Maps of Forecast/Observed Values or Scores Over Forecast Time

Description

Create animations of maps in an equi-rectangular or stereographic projection, showing the anomalies, the climatologies, the mean InterQuartile Range, Maximum-Mininum, Standard Deviation, Median Absolute Deviation, the trends, the RMSE, the correlation or the RMSSS, between modelled and observed data along the forecast time (lead-time) for all input experiments and input observational datasets.

Usage

AnimateMap(var, lon, lat, toptitle = rep("", 11), sizetit = 1, units = "",
  monini = 1, freq = 12, msk95lev = FALSE, brks = NULL, cols = NULL,
  filled.continents = FALSE, lonmin = 0, lonmax = 360, latmin = -90,
  latmax = 90, intlon = 20, intlat = 30, drawleg = TRUE,
  subsampleg = 1, colNA = "white", equi = TRUE,
  fileout = c("output1_animvsltime.gif", "output2_animvsltime.gif",
  "output3_animvsltime.gif"), ...)

Arguments

var

Matrix of dimensions (nltime, nlat, nlon) or (nexp/nmod, nltime, nlat, nlon) or (nexp/nmod, 3/4, nltime, nlat, nlon) or (nexp/nmod, nobs, 3/4, nltime, nlat, nlon).

lon

Vector containing longtitudes (degrees).

lat

Vector containing latitudes (degrees).

toptitle

c('','', …) array of main title for each animation, optional. If RMS, RMSSS, correlations: first exp with successive obs, then second exp with successive obs, etc ...

sizetit

Multiplicative factor to increase title size, optional.

units

Units, optional.

monini

Starting month between 1 and 12. Default = 1.

freq

1 = yearly, 12 = monthly, 4 = seasonal ...

msk95lev

TRUE/FALSE grid points with dots if 95% significance level reached. Default = FALSE.

brks

Limits of colour levels, optional. For example: seq(min(var), max(var), (max(var) - min(var)) / 10).

cols

Vector of colours of length(brks) - 1, optional.

filled.continents

Continents filled in grey (TRUE) or represented by a black line (FALSE). Default = TRUE. Filling unavailable if crossing Greenwich and equi = TRUE. Filling unavailable if square = FALSE and equi = TRUE.

lonmin

Westward limit of the domain to plot (> 0 or < 0). Default : 0 degrees.

lonmax

Eastward limit of the domain to plot (> 0 or < 0). lonmax > lonmin. Default : 360 degrees.

latmin

Southward limit of the domain to plot. Default : -90 degrees.

latmax

Northward limit of the domain to plot. Default : 90 degrees.

intlon

Interval between longitude ticks on x-axis. Default = 20 degrees.

intlat

Interval between latitude ticks on y-axis for equi = TRUE or between latitude circles for equi = FALSE. Default = 30 degrees.

drawleg

Draw a colorbar. Can be FALSE only if square = FALSE or equi = FALSE. Default = TRUE.

subsampleg

Supsampling factor of the interval between ticks on colorbar. Default = 1 = every colour level.

colNA

Color used to represent NA. Default = 'white'.

equi

TRUE/FALSE == cylindrical equidistant/stereographic projection. Default: TRUE.

fileout

c('', '', …) array of output file name for each animation. If RMS, RMSSS, correlations : first exp with successive obs, then second exp with successive obs, etc ...

...

Arguments to be passed to the method. Only accepts the following graphical parameters: adj ann ask bty cex cex.axis cex.lab cex.main cex.sub cin col.axis col.lab col.main col.sub cra crt csi cxy err family fg fig font font.axis font.lab font.main font.sub las lheight ljoin lmitre lty lwd mai mar mex mfcol mfrow mfg mgp mkh oma omd omi page pch plt pty smo srt tck tcl usr xaxp xaxs xaxt xlog xpd yaxp yaxs yaxt ylbias ylog. For more information about the parameters see `par`.

Details

Examples of input:

  1. Outputs from clim (exp, obs, memb = FALSE): (nmod, nltime, nlat, nlon) or (nobs, nltime, nlat, nlon)

  2. Model output from load/ano/smoothing: (nmod, nmemb, sdate, nltime, nlat, nlon) then passed through spread(var, posdim = 2, narm = TRUE) & mean1dim(var, posdim = 3, narm = TRUE) or through trend(mean1dim(var, 2), posTR = 2): (nmod, 3, nltime, nlat, nlon) animates average along start dates of IQR/MaxMin/SD/MAD across members or trends of the ensemble-mean computed accross the start dates.

  3. model and observed output from load/ano/smoothing: (nmod, nmemb, sdate, nltime, nlat, nlon) & (nobs, nmemb, sdate, nltime, nlat, nlon) then averaged along members mean1dim(var_exp/var_obs, posdim = 2): (nmod, sdate, nltime, nlat, nlon) (nobs, sdate, nltime, nlat, nlon) then passed through corr(exp, obs, posloop = 1, poscor = 2) or RMS(exp, obs, posloop = 1, posRMS = 2): (nmod, nobs, 3, nltime, nlat, nlon) animates correlations or RMS between each exp & each obs against leadtime.

Examples

Run this code
# NOT RUN {
# See ?Load for explanations on the first part of this example
 
# }
# NOT RUN {
data_path <- system.file('sample_data', package = 's2dverification')
expA <- list(name = 'experiment', path = file.path(data_path,
            'model/$EXP_NAME$/$STORE_FREQ$_mean/$VAR_NAME$_3hourly',
            '$VAR_NAME$_$START_DATE$.nc'))
obsX <- list(name = 'observation', path = file.path(data_path,
            '$OBS_NAME$/$STORE_FREQ$_mean/$VAR_NAME$',
            '$VAR_NAME$_$YEAR$$MONTH$.nc'))

# Now we are ready to use Load().
startDates <- c('19851101', '19901101', '19951101', '20001101', '20051101')
sampleData <- Load('tos', list(expA), list(obsX), startDates,
                  output = 'lonlat', latmin = 27, latmax = 48, 
                  lonmin = -12, lonmax = 40)
 
# }
# NOT RUN {
 
# }
# NOT RUN {
clim <- Clim(sampleData$mod, sampleData$obs, memb = FALSE)
 
# }
# NOT RUN {
AnimateMap(clim$clim_exp, sampleData$lon, sampleData$lat,
 toptitle = "climatology of decadal prediction", sizetit = 1, 
 units = "degree", brks = seq(270, 300, 3), monini = 11, freq = 12, 
 msk95lev = FALSE, filled.continents = TRUE, intlon = 10, intlat = 10,
 fileout = 'clim_dec.gif')
 
# }
# NOT RUN {
ano_exp <- Ano(sampleData$mod, clim$clim_exp)
ano_obs <- Ano(sampleData$obs, clim$clim_obs)
leadtimes_dimension <- 4
initial_month <- 11
mean_start_month <- 1
mean_stop_month <- 12
season_means_mod <- Season(ano_exp, leadtimes_dimension, initial_month,
                          mean_start_month, mean_stop_month)
season_means_obs <- Season(ano_obs, leadtimes_dimension, initial_month,
                          mean_start_month, mean_stop_month)
 
# }
# NOT RUN {
AnimateMap(Mean1Dim(season_means_mod, 2)[1, 1, , , ], sampleData$lon,
 sampleData$lat, toptitle = "Annual anomalies 1985 of decadal prediction",
 sizetit = 1, units = "degree", monini = 1, freq = 1, msk95lev = FALSE,
 brks = seq(-0.5, 0.5, 0.1), intlon = 10, intlat = 10,
 filled.continents = TRUE, fileout = 'annual_means_dec.gif')
 
# }
# NOT RUN {
dim_to_mean <- 2  # Mean along members
rms <- RMS(Mean1Dim(season_means_mod, dim_to_mean),
          Mean1Dim(season_means_obs, dim_to_mean))
 
# }
# NOT RUN {
AnimateMap(rms, sampleData$lon, sampleData$lat, toptitle =
 "RMSE decadal prediction", sizetit = 1, units = "degree",
 monini = 1, freq = 1, msk95lev = FALSE, brks = seq(0, 0.8, 0.08),
 intlon = 10, intlat = 10, filled.continents = TRUE,
 fileout = 'rmse_dec.gif')
 
# }

Run the code above in your browser using DataLab