From 7c6b99f2236c08450fcdb04a6da3c55710ea79af Mon Sep 17 00:00:00 2001 From: aho Date: Thu, 23 Nov 2023 14:19:39 +0100 Subject: [PATCH 1/2] Avoid producing Inf when all data are NAs --- .../Indices/R/plot_deterministic_forecast.R | 9 +++++-- modules/Visualization/R/tmp/PlotRobinson.R | 25 ++++++++++++++++--- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/modules/Indices/R/plot_deterministic_forecast.R b/modules/Indices/R/plot_deterministic_forecast.R index da107e47..30f13b78 100644 --- a/modules/Indices/R/plot_deterministic_forecast.R +++ b/modules/Indices/R/plot_deterministic_forecast.R @@ -16,8 +16,13 @@ plot_deterministic_forecast <- function(obs, fcst, title = NULL, n_fcst <- as.numeric(dim(fcst)[time_dim]) if (is.null(ylims)) { - ylims <- c(-max(abs(fcst) + 0.1, abs(obs) + 0.1, na.rm = TRUE), - max(abs(fcst) + 0.1, abs(obs) + 0.1, na.rm = TRUE)) + if (all(is.na(fcst)) && all(is.na(obs))) { + # No data, return random ylims + ylims <- c(-1, 1) + } else { + ylims <- c(-max(abs(fcst) + 0.1, abs(obs) + 0.1, na.rm = TRUE), + max(abs(fcst) + 0.1, abs(obs) + 0.1, na.rm = TRUE)) + } } if (is.null(xlabs)) { xlabs <- 1:n_fcst diff --git a/modules/Visualization/R/tmp/PlotRobinson.R b/modules/Visualization/R/tmp/PlotRobinson.R index d8210258..d50e7f36 100644 --- a/modules/Visualization/R/tmp/PlotRobinson.R +++ b/modules/Visualization/R/tmp/PlotRobinson.R @@ -251,7 +251,26 @@ PlotRobinson <- function(data, lon, lat, lon_dim = NULL, lat_dim = NULL, # Color bar ## Check: brks, cols, bar_limits, color_fun, bar_extra_margin, units ## Build: brks, cols, bar_limits, col_inf, col_sup - var_limits <- c(min(data, na.rm = TRUE), max(data, na.rm = TRUE)) + if (!all(is.na(data))) { + var_limits <- c(min(data[!is.infinite(data)], na.rm = TRUE), + max(data[!is.infinite(data)], na.rm = TRUE)) + } else { + warning("All the data are NAs. The map will be filled with colNA.") + if (!is.null(brks) && length(brks) > 1) { + #NOTE: var_limits be like this to avoid warnings from ColorBar + var_limits <- c(min(brks, na.rm = TRUE) + diff(brks)[1], + max(brks, na.rm = TRUE)) + } else if (!is.null(bar_limits)) { + var_limits <- c(bar_limits[1] + 0.01, bar_limits[2]) + } else { + var_limits <- c(-0.5, 0.5) # random range since colorbar is not going to be plotted + if (drawleg) { + drawleg <- FALSE + warning("All data are NAs. Color bar won't be drawn. If you want to have ", + "color bar still, define parameter 'brks' or 'bar_limits'.") + } + } + } colorbar <- ColorBar(brks = brks, cols = cols, vertical = vertical, subsampleg = NULL, bar_limits = bar_limits, var_limits = var_limits, triangle_ends = triangle_ends, col_inf = col_inf, col_sup = col_sup, color_fun = color_fun, @@ -317,12 +336,12 @@ PlotRobinson <- function(data, lon, lat, lon_dim = NULL, lat_dim = NULL, # Add triangles to brks brks_ggplot <- brks - if (max(data, na.rm = T) > tail(brks, 1)) { + if (var_limits[2] > tail(brks, 1)) { brks_ggplot <- c(brks_ggplot, max(data, na.rm = T)) } else { brks_ggplot <- c(brks_ggplot, tail(brks, 1) + diff(tail(brks, 2))) } - if (min(data, na.rm = T) < brks[1]) { + if (var_limits[1] < brks[1]) { brks_ggplot <- c(min(data, na.rm = T), brks_ggplot) } else { brks_ggplot <- c(brks[1] - diff(brks[1:2]), brks_ggplot) -- GitLab From 026ad2ebfe7950591b309b5ce512df76518b10aa Mon Sep 17 00:00:00 2001 From: aho Date: Thu, 23 Nov 2023 17:28:23 +0100 Subject: [PATCH 2/2] correct variable name --- modules/Visualization/R/tmp/PlotRobinson.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/Visualization/R/tmp/PlotRobinson.R b/modules/Visualization/R/tmp/PlotRobinson.R index d50e7f36..bd427448 100644 --- a/modules/Visualization/R/tmp/PlotRobinson.R +++ b/modules/Visualization/R/tmp/PlotRobinson.R @@ -264,8 +264,8 @@ PlotRobinson <- function(data, lon, lat, lon_dim = NULL, lat_dim = NULL, var_limits <- c(bar_limits[1] + 0.01, bar_limits[2]) } else { var_limits <- c(-0.5, 0.5) # random range since colorbar is not going to be plotted - if (drawleg) { - drawleg <- FALSE + if (!is.null(legend)) { + legend <- NULL warning("All data are NAs. Color bar won't be drawn. If you want to have ", "color bar still, define parameter 'brks' or 'bar_limits'.") } -- GitLab