Order of data and dots for plotting
I have done some tests with the order of the lon and lat dimensions of the data being plotted:
library(s2dv)
library(ClimProjDiags)
x <- readRDS('/esarchive/scratch/cdelgado/extremes_outputs/outputs_metrics/acc_pearson_dcpp_EC-Earth3-i4_fyears1-5_GHCNv4_tas_calib-False.rds')
data <- x$acc_dcpp$r
dots <- x$acc_dcpp$sign
lon <- x$lon
lat <- x$lat
## CASE 1 - PlotEquiMap and PlotLayout fine
data1 <- s2dv::Reorder(data = data, order = c('lon','lat'))
dots1 <- s2dv::Reorder(data = dots, order = c('lon','lat'))
s2dv::PlotEquiMap(var = data1, dots = dots1, lon = lon, lat = lat, toptitle = 'Case 1', filled.continents = F)
s2dv::PlotLayout(fun = PlotEquiMap, plot_dims = c('lon','lat'), lon = lon, lat = lat, toptitle = 'Case 1', filled.continents = F,
var = list(data1, data1), special_args = list(list(dots = dots1), list(dots = dots1)))
## CASE 2 - PlotEquiMap fine, PlotLayout fails
data2 <- s2dv::Reorder(data = data, order = c('lat','lon'))
dots2 <- s2dv::Reorder(data = dots, order = c('lat','lon'))
s2dv::PlotEquiMap(var = data2, dots = dots2, lon = lon, lat = lat, toptitle = 'Case 2', filled.continents = F)
s2dv::PlotLayout(fun = PlotEquiMap, plot_dims = c('lon','lat'), lon = lon, lat = lat, toptitle = 'Case 2', filled.continents = F,
var = list(data2, data2), special_args = list(list(dots = dots2), list(dots = dots2)))
## CASE 3 - PlotEquiMap and PlotLayout fail
data3 <- s2dv::Reorder(data = data, order = c('lon','lat'))
dots3 <- s2dv::Reorder(data = dots, order = c('lat','lon'))
s2dv::PlotEquiMap(var = data3, dots = dots3, lon = lon, lat = lat, toptitle = 'Case 3', filled.continents = F)
s2dv::PlotLayout(fun = PlotEquiMap, plot_dims = c('lon','lat'), lon = lon, lat = lat, toptitle = 'Case 3', filled.continents = F,
var = list(data3, data3), special_args = list(list(dots = dots3), list(dots = dots3)))
## CASE 4 - PlotEquiMap fails, PlotLayout fine
data4 <- s2dv::Reorder(data = data, order = c('lat','lon'))
dots4 <- s2dv::Reorder(data = dots, order = c('lon','lat'))
s2dv::PlotEquiMap(var = data4, dots = dots4, lon = lon, lat = lat, toptitle = 'Case 4', filled.continents = F)
s2dv::PlotLayout(fun = PlotEquiMap, plot_dims = c('lon','lat'), lon = lon, lat = lat, toptitle = 'Case 4', filled.continents = F,
var = list(data4, data4), special_args = list(list(dots = dots4), list(dots = dots4)))
## CASES 5 (lat and lon have same length) - PlotLayout plots incorrect results
data5a <- ClimProjDiags::Subset(x = data, along = c('lon','lat'), indices = list(60:70, 30:40), drop = FALSE)
dots5a <- ClimProjDiags::Subset(x = dots, along = c('lon','lat'), indices = list(60:70, 30:40), drop = FALSE)
lon5 <- lon[60:70]
lat5 <- lat[30:40]
data5b <- s2dv::Reorder(data = data5a, order = c('lat','lon'))
dots5b <- s2dv::Reorder(data = dots5a, order = c('lat','lon'))
s2dv::PlotEquiMap(var = data5a, dots = dots5a, lon = lon5, lat = lat5, toptitle = 'Case 5a', filled.continents = F)
s2dv::PlotEquiMap(var = data5b, dots = dots5b, lon = lon5, lat = lat5, toptitle = 'Case 5b', filled.continents = F)
s2dv::PlotLayout(fun = PlotEquiMap, plot_dims = c('lon','lat'), lon = lon5, lat = lat5, toptitle = 'Case 5 (right panel is incorrect)', filled.continents = F,
var = list(data5a, data5b), special_args = list(list(dots = dots5a), list(dots = dots5b)))
- Case 1: if dim=c(lon,lat) in both data and dots, everything is fine.
- Case 2: if dim=c(lat,lon) in both data and dots, PlotEquiMap works fine, but PlotLayout returns error (PlotLayout does not reorder dots dimensions).
- Case 3: if dim(data)=c(lon,lat) but dim(dots)=c(lat,lon), both PlotEquiMap and PlotLayout return error.
- Case 4: if dim(data)=c(lat,lon) but dim(dots)=c(lon,lat), PlotEquiMap returns error, but PlotLayout works fine (data is reorder, but PlotLayout does not reorder dots, so it works by chance).
- Case 5 (most critical!!). When the dimensions are not reordered to c(lon,lat) and there are the same number of latitudes and longitudes, PlotEquiMap works fine, but PlotLayout plots incorrect results (please see the very last plot, Case 5).
Best regards,
Carlos