Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • s2dv s2dv
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 17
    • Issues 17
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 2
    • Merge requests 2
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Earth SciencesEarth Sciences
  • s2dvs2dv
  • Issues
  • #77
Closed
Open
Issue created Sep 27, 2022 by Carlos Delgado Torres@cdelgadoMaintainer

Order of data and dots for plotting

Hi @aho and @erifarov,

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

Assignee
Assign to
Time tracking