From 9674ad22e7b21cb515dd44585f6e4a5a4e60ed9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Grelot?= <frederic.grelot@irstea.fr> Date: Sun, 23 Jan 2022 15:43:51 +0100 Subject: [PATCH] =?UTF-8?q?geau=20Version=201.0.8.0=200=20errors=20?= =?UTF-8?q?=E2=9C=94=20|=200=20warnings=20=E2=9C=94=20|=200=20notes=20?= =?UTF-8?q?=E2=9C=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit map_so_ii refactoring - découpage des appels aux thèmes en fonctions map_theme_xxx - appel via un switch so_ii_population - correction du dataset (il manquait les années de type PSDC - correction du script so_ii_onrn - ajout de la bonne version (oubli...) --- geau/DESCRIPTION | 2 +- geau/R/data.r | 2 +- geau/R/map_so_ii.r | 771 +++++++++++++++++-------------- geau/data-raw/so_ii_onrn.R | 18 +- geau/data-raw/so_ii_population.R | 3 +- geau/data/so_ii_population.rda | Bin 5274 -> 6165 bytes geau/man/so_ii_population.Rd | 2 +- 7 files changed, 428 insertions(+), 370 deletions(-) diff --git a/geau/DESCRIPTION b/geau/DESCRIPTION index 6d9acb0..e6a397d 100644 --- a/geau/DESCRIPTION +++ b/geau/DESCRIPTION @@ -1,6 +1,6 @@ Package: geau Title: Utilities very useful to share within geau-inondation team -Version: 1.0.7.0 +Version: 1.0.8.0 Authors@R: c( person(given = "Frédéric", diff --git a/geau/R/data.r b/geau/R/data.r index 11d1c53..0c15918 100644 --- a/geau/R/data.r +++ b/geau/R/data.r @@ -163,7 +163,7 @@ #' #' A dataset containing the population of commune in so-ii according to INSEE. #' -#' @format numeric matrix +#' @format numeric matrix 78 rows, 33 columns #' \describe{ #' \item{row}{commune as in so_ii_scope} #' \item{column}{year} diff --git a/geau/R/map_so_ii.r b/geau/R/map_so_ii.r index 5eb7b23..14d4ceb 100644 --- a/geau/R/map_so_ii.r +++ b/geau/R/map_so_ii.r @@ -42,7 +42,7 @@ #' #' @return Nothing useful. #' -#' @export +#' @export map_so_ii #' #' @encoding UTF-8 #' @author Frédéric Grelot @@ -81,406 +81,477 @@ map_so_ii = function( graphics::par(mai = c(.65, .60, .50, .15)) plot(geau::so_ii_limit, axes = TRUE) - if ("catchment" %in% theme) { - if (missing(detail)) { - detail = "1" - } - detail = match.arg( - as.character(detail), - choices = levels(geau::so_ii_catchment[["degre"]]) + ## Plot theme if any + theme_legend = switch( + EXPR = theme, + "catchment" = map_theme_catchment(detail, legend_theme), + "catnat" = map_theme_catnat(detail, year, legend_theme), + "clc" = map_theme_clc(legend_theme), + "collectivity" = map_theme_collectivity(detail, legend_theme), + "hydro" = map_theme_hydro(detail, legend_theme), + "onrn" = map_theme_onrn(detail, legend_theme), + "population" = map_theme_population(year, legend_theme), + ) + + + if (!missing(dataset)) plot(dataset[["geometry"]], add = TRUE, ...) + + plot(geau::so_ii_limit, lwd = 2, add = TRUE) + + if (bar == TRUE) { + terra::sbar( + 10, c(3.55, 43.47), + type = "bar", + below = "km", + label = c(0, 5, 10), + cex = .8 ) - selection = geau::so_ii_catchment[["degre"]] == detail - geometry = geau::so_ii_catchment[["geometry"]][selection] - catchment = as.factor(geau::so_ii_catchment[["catchment_name"]][selection]) - color_legend = grDevices::hcl.colors(nlevels(catchment), "Pastel 1", alpha = .3) - color = color_legend[catchment] - border = "grey80" - lwd = 2 - theme_legend = list( - title = sprintf("Bassin versant"), - legend = levels(catchment), - x = "topright", + } + + if (!is.null(dataset_legend)) { + dataset_legend = c( + x = "bottomright", cex = .8, bg = "white", inset = 0.01, - fill = color_legend, - border = border - ) - if (detail == "3") rm(theme_legend) - - plot(geometry, border = border, col = color, lwd = lwd, add = TRUE) + dataset_legend) + do.call(graphics::legend, dataset_legend) } - if ("catnat" %in% theme) { - if (missing(detail)) { - detail = dimnames(geau::so_ii_catnat)[["hazard"]] + if (legend_theme == TRUE && exists("theme_legend", inherits = FALSE)) { + if (!is.null(theme_legend[["text.width"]])) { + text_legend = theme_legend[["legend"]] + theme_legend[["legend"]] = rep("", length(text_legend)) } - detail = match.arg( - detail, - dimnames(geau::so_ii_catnat)[["hazard"]], - several.ok = TRUE - ) - border = NA - color = NA - if (!missing(year)) { - year = match.arg( - as.character(year), - dimnames(geau::so_ii_catnat)[["period"]] - ) - border = "grey80" - catnat = apply( - geau::so_ii_catnat[, year, detail, drop = FALSE], - 1:2, - sum - ) - color = ifelse( - catnat > 0, - scales::alpha("grey80", .5), - NA - ) - theme_legend = list( - title = sprintf("Cat-Nat %s", year), - legend = c("Sans d\u00e9claration", "Avec d\u00e9claration"), - x = "topright", - cex = .8, - bg = "white", - inset = 0.01, - fill = unique(color), - border = border + temp = do.call(graphics::legend, theme_legend) + if (!is.null(theme_legend[["text.width"]])) { + graphics::text( + x = temp[["rect"]][["left"]] + temp[["rect"]][["w"]], + y = temp[["text"]][["y"]], + labels = text_legend, + pos = 2 ) } + } - plot( - geau::so_ii_collectivity[["geometry"]], - border = border, - col = color, - add = TRUE - ) + return(invisible(NULL)) +} + +map_theme_catchment = function(detail, add_legend) { + if (missing(detail)) { + detail = "1" } + detail = match.arg( + as.character(detail), + choices = levels(geau::so_ii_catchment[["degre"]]) + ) - if ("clc" %in% theme) { - plot( - geau::so_ii_clc[["geometry"]], - border = NA, - col = geau::so_ii_clc[["color"]], - add = TRUE - ) + selection = geau::so_ii_catchment[["degre"]] == detail + geometry = geau::so_ii_catchment[["geometry"]][selection] + catchment = as.factor(geau::so_ii_catchment[["catchment_name"]][selection]) + color_legend = grDevices::hcl.colors(nlevels(catchment), "Pastel 1", alpha = .3) + color = color_legend[catchment] + border = "grey80" + lwd = 2 + theme_legend = list( + title = sprintf("Bassin versant"), + legend = levels(catchment), + x = "topright", + cex = .8, + bg = "white", + inset = 0.01, + fill = color_legend, + border = border + ) + plot(geometry, border = border, col = color, lwd = lwd, add = TRUE) - theme_legend = list( - title = "CLC (2018)", - legend = geau::clc_color[["label_fr"]], - x = "topright", - cex = .8, - bg = "white", - inset = 0.01, - fill = geau::clc_color[["color"]] - ) + if (add_legend == TRUE && detail != "3") { + return(theme_legend) + } else { + return(NULL) } +} - if ("collectivity" %in% theme) { - if (missing(detail)) { - detail = "none" - } - detail = match.arg( - detail, - c("none", "syble", "symbo", "epci", "syndicate") - ) +map_theme_catnat = function(detail, year, add_legend) { + if (missing(detail)) { + detail = dimnames(geau::so_ii_catnat)[["hazard"]] + } + detail = match.arg( + detail, + dimnames(geau::so_ii_catnat)[["hazard"]], + several.ok = TRUE + ) + theme_legend = NULL + border = NA + color = NA + if (!missing(year)) { border = "grey80" - color = NA - + color_none = color + color_with = scales::alpha("grey80", .5) + legend_title = switch( + EXPR = as.character(length(detail)), + "3" = "Cat Nat", + sprintf("Cat Nat [%s]", paste(sort(detail), collapse = " & ")) + ) + year = match.arg( + as.character(year), + dimnames(geau::so_ii_catnat)[["period"]] + ) + catnat = apply( + geau::so_ii_catnat[, year, detail, drop = FALSE], + 1:2, + sum + ) + color = ifelse( + catnat > 0, + color_with, + color_none + ) theme_legend = list( - title = "Caract\u00e9ristiques des communes", - legend = "Commune", + title = sprintf("%s %s", legend_title, year), + legend = c("Sans d\u00e9claration", "Avec d\u00e9claration"), x = "topright", cex = .8, bg = "white", inset = 0.01, - fill = color, + fill = c(color_none, color_with), border = border ) - geometry = geau::so_ii_collectivity[["geometry"]] - plot(geometry, border = border, col = color, add = TRUE) - - if (detail %in% c("syble", "syndicate")) { - color_legend = scales::alpha("orange", .3) - color = ifelse( - geau::so_ii_collectivity[["syble"]], - color_legend, - NA - ) - plot(geometry, border = border, col = color, add = TRUE) - theme_legend[["legend"]] = c(theme_legend[["legend"]], "SYBLE") - theme_legend[["fill"]] = c(theme_legend[["fill"]], color_legend) - } - if (detail %in% c("symbo", "syndicate")) { - color_legend = scales::alpha("green", .3) - color = ifelse( - geau::so_ii_collectivity[["symbo"]], - color_legend, - NA - ) - plot(geometry, border = border, col = color, add = TRUE) - theme_legend[["legend"]] = c(theme_legend[["legend"]], "SYMBO") - theme_legend[["fill"]] = c(theme_legend[["fill"]], color_legend) - } - if (detail == "epci") { - epci = as.factor(geau::so_ii_collectivity[["epci_name"]]) - color_legend = grDevices::hcl.colors(nlevels(epci), "Lisbon", alpha = .3) - color = color_legend[epci] - plot(geometry, border = border, col = color, add = TRUE) - theme_legend[["legend"]] = levels(epci) - theme_legend[["fill"]] = color_legend - } } - if ("hydro" %in% theme) { - if (missing(detail)) { - detail = "none" - } - detail = match.arg( - as.character(detail), - choices = c( - "none", - levels(geau::so_ii_hydro[["degre"]]), - levels(geau::so_ii_hydro[["type"]]) - ) - ) - color = scales::alpha("blue", .3) - bg = scales::alpha("blue", .3) - border = NA - selection = seq(nrow(geau::so_ii_hydro)) - theme_legend = list( - title = sprintf("R\u00e9seau hydrographique"), - legend = "\u00e9l\u00e9ment du r\u00e9seau", - x = "topright", - cex = .8, - bg = "white", - inset = 0.01, - col = color, - lwd = 1 - ) - if (detail %in% levels(geau::so_ii_hydro[["type"]])) { - selection = as.character(geau::so_ii_hydro[["type"]]) == detail - theme_legend[["legend"]] = detail - } - if (detail %in% levels(geau::so_ii_hydro[["degre"]])) { - selection = as.character(geau::so_ii_hydro[["degre"]]) <= detail - } - geometry = geau::so_ii_hydro[["geometry"]][selection] - lwd = 4 - as.numeric(geau::so_ii_hydro[["degre"]][selection]) + plot( + geau::so_ii_collectivity[["geometry"]], + border = border, + col = color, + add = TRUE + ) - plot(geometry, col = color, lwd = lwd, border = border, add = TRUE) + if (add_legend == TRUE) { + return(theme_legend) + } else { + return(NULL) } +} - if ("onrn" %in% theme) { - if (missing(detail)) { - detail = "cost" - } - detail = match.arg( - as.character(detail), - sort(colnames(geau::so_ii_onrn)[1:8]) - ) +map_theme_clc = function(add_legend) { + plot( + geau::so_ii_clc[["geometry"]], + border = NA, + col = geau::so_ii_clc[["color"]], + add = TRUE + ) - onrn_palette = switch( - EXPR = detail, - "n_catnat" = scales::colour_ramp(c("white", "red"), alpha = .5), - "freq_sin" = scales::colour_ramp(c("white", "red"), alpha = .5), - "cost" = scales::colour_ramp(c("white", "red"), alpha = .5), - "cost_hab" = scales::colour_ramp(c("white", "red"), alpha = .5), - "cost_mean" = scales::colour_ramp(c("white", "red"), alpha = .5), - "ratio" = scales::colour_ramp(c("green", "white", "red"), alpha = .5), - "balance" = scales::colour_ramp(c("red", "white", "green"), alpha = .5), - "ppri_year" = scales::colour_ramp(c("grey80", "grey50"), alpha = .5), - NULL - ) - onrn_trans = switch( - EXPR = detail, - "n_catnat" = scales::identity_trans(), - "freq_sin" = scales::identity_trans(), - "cost" = scales::sqrt_trans(), - "cost_hab" = scales::sqrt_trans(), - "cost_mean" = scales::sqrt_trans(), - "ratio" = scales::sqrt_trans(), - "balance" = scales::modulus_trans(.5), - "ppri_year" = scales::identity_trans(), - NULL + theme_legend = list( + title = "CLC (2018)", + legend = geau::clc_color[["label_fr"]], + x = "topright", + cex = .8, + bg = "white", + inset = 0.01, + fill = geau::clc_color[["color"]] + ) + + if (add_legend == TRUE) { + return(theme_legend) + } else { + return(NULL) + } +} + +map_theme_collectivity = function(detail, add_legend) { + if (missing(detail)) { + detail = "none" + } + detail = match.arg( + detail, + c("none", "syble", "symbo", "epci", "syndicate") + ) + + border = "grey80" + color = NA + + theme_legend = list( + title = "Caract\u00e9ristiques des communes", + legend = "Commune", + x = "topright", + cex = .8, + bg = "white", + inset = 0.01, + fill = color, + border = border + ) + geometry = geau::so_ii_collectivity[["geometry"]] + plot(geometry, border = border, col = color, add = TRUE) + + if (detail %in% c("syble", "syndicate")) { + color_legend = scales::alpha("orange", .3) + color = ifelse( + geau::so_ii_collectivity[["syble"]], + color_legend, + NA ) - onrn_range = switch( - EXPR = detail, - "ratio" = c(0, 4), - "balance" = max(abs(range(geau::so_ii_onrn[["balance"]]))) * c(-1, 1), - NULL + plot(geometry, border = border, col = color, add = TRUE) + theme_legend[["legend"]] = c(theme_legend[["legend"]], "SYBLE") + theme_legend[["fill"]] = c(theme_legend[["fill"]], color_legend) + } + if (detail %in% c("symbo", "syndicate")) { + color_legend = scales::alpha("green", .3) + color = ifelse( + geau::so_ii_collectivity[["symbo"]], + color_legend, + NA ) + plot(geometry, border = border, col = color, add = TRUE) + theme_legend[["legend"]] = c(theme_legend[["legend"]], "SYMBO") + theme_legend[["fill"]] = c(theme_legend[["fill"]], color_legend) + } + if (detail == "epci") { + epci = as.factor(geau::so_ii_collectivity[["epci_name"]]) + color_legend = grDevices::hcl.colors(nlevels(epci), "Lisbon", alpha = .3) + color = color_legend[epci] + plot(geometry, border = border, col = color, add = TRUE) + theme_legend[["legend"]] = levels(epci) + theme_legend[["fill"]] = color_legend + } - color = scales::cscale( - c(onrn_range, geau::so_ii_onrn[[detail]]), - onrn_palette, - trans = onrn_trans) - if (length(onrn_range) > 0) { - color = color[-seq(onrn_range)] - } - border = "grey80" - plot( - geau::so_ii_collectivity[["geometry"]], - border = border, - col = color, - add = TRUE - ) + if (add_legend == TRUE) { + return(theme_legend) + } else { + return(NULL) + } +} - if (sprintf("%s_min", detail) %in% names(geau::so_ii_onrn)) { - selection = c(detail, sprintf("%s_min", detail), sprintf("%s_max", detail)) - temp = unique(geau::so_ii_onrn[selection]) - temp = temp[order(temp[[detail]]), ] - text_legend = gsub("0 - 0", "0", - sprintf( - "%s - %s", - temp[[sprintf("%s_min", detail)]], - temp[[sprintf("%s_max", detail)]] - ) - ) - value_legend = temp[[detail]] - } - if (detail %in% c("n_catnat", "ppri_year")) { - value_legend = round( - seq( - min(geau::so_ii_onrn[[detail]], na.rm = TRUE), - max(geau::so_ii_onrn[[detail]], na.rm = TRUE), - length.out = 5 - ) - ) - text_legend = value_legend - } - if (detail %in% c("balance")) { - value_legend = unique( - c( - seq(min(geau::so_ii_onrn[[detail]]), 0, length.out = 4), - seq(0, max(geau::so_ii_onrn[[detail]]), length.out = 4) - ) - ) - text_legend = formatC( - as.integer(signif(round(value_legend), 2)), - big.mark = " " - ) - } - color_legend = scales::cscale( - c(onrn_range, value_legend), - onrn_palette, - trans = onrn_trans - ) - if (length(onrn_range) > 0) { - color_legend = color_legend[-seq(onrn_range)] - } - title_onrn = switch( - EXPR = detail, - "n_catnat" = "N arr\u00eat\u00e9s Cat-Nat (ONRN)", - "freq_sin" = "Sinistre / Risque [1995-2018]", - "cost" = "Co\u00fbt cumul\u00e9 (\u20AC) [1995-2018]", - "cost_hab" = "Co\u00fbt / hab (\u20ac) [1995-2018]", - "cost_mean" = "Co\u00fbt / sinistre (\u20ac) [1995-2018]", - "ratio" = "Co\u00fbt / Prime [1995-2018]", - "balance" = "Co\u00fbt - Prime (\u20ac) [1995-2018]", - "ppri_year" = "Ann\u00e9e des PPRI", - NULL +map_theme_hydro = function(detail, add_legend) { + if (missing(detail)) { + detail = "none" + } + detail = match.arg( + as.character(detail), + choices = c( + "none", + levels(geau::so_ii_hydro[["degre"]]), + levels(geau::so_ii_hydro[["type"]]) ) + ) + color = scales::alpha("blue", .3) + bg = scales::alpha("blue", .3) + border = NA + selection = seq(nrow(geau::so_ii_hydro)) + theme_legend = list( + title = sprintf("R\u00e9seau hydrographique"), + legend = "\u00e9l\u00e9ment du r\u00e9seau", + x = "topright", + cex = .8, + bg = "white", + inset = 0.01, + col = color, + lwd = 1 + ) + if (detail %in% levels(geau::so_ii_hydro[["type"]])) { + selection = as.character(geau::so_ii_hydro[["type"]]) == detail + theme_legend[["legend"]] = detail + } + if (detail %in% levels(geau::so_ii_hydro[["degre"]])) { + selection = as.character(geau::so_ii_hydro[["degre"]]) <= detail + } + geometry = geau::so_ii_hydro[["geometry"]][selection] + lwd = 4 - as.numeric(geau::so_ii_hydro[["degre"]][selection]) - theme_legend = list( - title = title_onrn, - legend = text_legend, - x = "topright", - cex = .8, - bg = "white", - inset = 0.01, - fill = color_legend, - border = border - ) - rm(text_legend) + plot(geometry, col = color, lwd = lwd, border = border, add = TRUE) + + if (add_legend == TRUE) { + return(theme_legend) + } else { + return(NULL) + } +} + +map_theme_onrn = function(detail, add_legend) { + if (missing(detail)) { + detail = "cost" } + detail = match.arg( + as.character(detail), + sort(colnames(geau::so_ii_onrn)[1:8]) + ) - if ("population" %in% theme) { - if (missing(year)) { - year = utils::tail(sort(colnames(geau::so_ii_population)), 1) - } - year = match.arg( - as.character(year), - sort(colnames(geau::so_ii_population)) + onrn_palette = switch( + EXPR = detail, + "n_catnat" = scales::colour_ramp(c("white", "red"), alpha = .5), + "freq_sin" = scales::colour_ramp(c("white", "red"), alpha = .5), + "cost" = scales::colour_ramp(c("white", "red"), alpha = .5), + "cost_hab" = scales::colour_ramp(c("white", "red"), alpha = .5), + "cost_mean" = scales::colour_ramp(c("white", "red"), alpha = .5), + "ratio" = scales::colour_ramp(c("green", "white", "red"), alpha = .5), + "balance" = scales::colour_ramp(c("red", "white", "green"), alpha = .5), + "ppri_year" = scales::colour_ramp(c("grey80", "grey50"), alpha = .5), + NULL + ) + onrn_trans = switch( + EXPR = detail, + "n_catnat" = scales::identity_trans(), + "freq_sin" = scales::identity_trans(), + "cost" = scales::sqrt_trans(), + "cost_hab" = scales::sqrt_trans(), + "cost_mean" = scales::sqrt_trans(), + "ratio" = scales::sqrt_trans(), + "balance" = scales::modulus_trans(.5), + "ppri_year" = scales::identity_trans(), + NULL + ) + onrn_range = switch( + EXPR = detail, + "ratio" = c(0, 4), + "balance" = max(abs(range(geau::so_ii_onrn[["balance"]]))) * c(-1, 1), + NULL + ) + + color = scales::cscale( + c(onrn_range, geau::so_ii_onrn[[detail]]), + onrn_palette, + trans = onrn_trans) + if (length(onrn_range) > 0) { + color = color[-seq(onrn_range)] + } + border = "grey80" + plot( + geau::so_ii_collectivity[["geometry"]], + border = border, + col = color, + add = TRUE + ) + + if (sprintf("%s_min", detail) %in% names(geau::so_ii_onrn)) { + selection = c(detail, sprintf("%s_min", detail), sprintf("%s_max", detail)) + temp = unique(geau::so_ii_onrn[selection]) + temp = temp[order(temp[[detail]]), ] + text_legend = gsub("0 - 0", "0", + sprintf( + "%s - %s", + temp[[sprintf("%s_min", detail)]], + temp[[sprintf("%s_max", detail)]] + ) ) - population_palette = scales::colour_ramp(c("white", "red"), alpha = .5) - color = matrix( - scales::cscale( - geau::so_ii_population, - population_palette, - trans = scales::log_trans()), - nrow = nrow(geau::so_ii_population), - dimnames = dimnames(geau::so_ii_population) + value_legend = temp[[detail]] + } + if (detail %in% c("n_catnat", "ppri_year")) { + value_legend = round( + seq( + min(geau::so_ii_onrn[[detail]], na.rm = TRUE), + max(geau::so_ii_onrn[[detail]], na.rm = TRUE), + length.out = 5 + ) ) - border = "grey80" - plot( - geau::so_ii_collectivity[["geometry"]], - border = border, - col = color[ , year], - add = TRUE + text_legend = value_legend + } + if (detail %in% c("balance")) { + value_legend = unique( + c( + seq(min(geau::so_ii_onrn[[detail]]), 0, length.out = 4), + seq(0, max(geau::so_ii_onrn[[detail]]), length.out = 4) + ) ) - - value_legend = c(100, 1000, 10000, 100000, 250000) - color_legend = scales::cscale( - c(range(geau::so_ii_population), value_legend), - population_palette, - trans = scales::log_trans() - )[-(1:2)] text_legend = formatC( - as.integer(value_legend), + as.integer(signif(round(value_legend), 2)), big.mark = " " ) - - theme_legend = list( - title = sprintf("Population %s", year), - legend = rep("", length(text_legend)), - x = "topright", - cex = .8, - bg = "white", - inset = 0.01, - fill = color_legend, - border = border, - text.width = graphics::strwidth(utils::tail(text_legend, 1)) + } + color_legend = scales::cscale( + c(onrn_range, value_legend), + onrn_palette, + trans = onrn_trans ) + if (length(onrn_range) > 0) { + color_legend = color_legend[-seq(onrn_range)] } + title_onrn = switch( + EXPR = detail, + "n_catnat" = "N arr\u00eat\u00e9s Cat-Nat (ONRN)", + "freq_sin" = "Sinistre / Risque [1995-2018]", + "cost" = "Co\u00fbt cumul\u00e9 (\u20AC) [1995-2018]", + "cost_hab" = "Co\u00fbt / hab (\u20ac) [1995-2018]", + "cost_mean" = "Co\u00fbt / sinistre (\u20ac) [1995-2018]", + "ratio" = "Co\u00fbt / Prime [1995-2018]", + "balance" = "Co\u00fbt - Prime (\u20ac) [1995-2018]", + "ppri_year" = "Ann\u00e9e des PPRI", + NULL + ) - if (!missing(dataset)) plot(dataset[["geometry"]], add = TRUE, ...) - - plot(geau::so_ii_limit, lwd = 2, add = TRUE) + theme_legend = list( + title = title_onrn, + legend = text_legend, + x = "topright", + cex = .8, + bg = "white", + inset = 0.01, + fill = color_legend, + border = border + ) - if (bar == TRUE) { - terra::sbar( - 10, c(3.55, 43.47), - type = "bar", - below = "km", - label = c(0, 5, 10), - cex = .8 - ) + if (add_legend == TRUE) { + return(theme_legend) + } else { + return(NULL) } +} - if (!is.null(dataset_legend)) { - dataset_legend = c( - x = "bottomright", - cex = .8, - bg = "white", - inset = 0.01, - dataset_legend) - do.call(graphics::legend, dataset_legend) +map_theme_population = function(year, add_legend) { + if (missing(year)) { + year = utils::tail(sort(colnames(geau::so_ii_population)), 1) } + year = match.arg( + as.character(year), + sort(colnames(geau::so_ii_population)) + ) + population_palette = scales::colour_ramp(c("white", "red"), alpha = .5) + color = matrix( + scales::cscale( + geau::so_ii_population, + population_palette, + trans = scales::log_trans()), + nrow = nrow(geau::so_ii_population), + dimnames = dimnames(geau::so_ii_population) + ) + border = "grey80" + plot( + geau::so_ii_collectivity[["geometry"]], + border = border, + col = color[ , year], + add = TRUE + ) + max_pop = max(geau::so_ii_population[ , year]) + min_pop = min(geau::so_ii_population[ , year]) + value_legend = unique(c( + min_pop, + 10^(ceiling(log(min_pop)/log(10)):floor(log(max_pop)/log(10))), + max_pop + )) + color_legend = scales::cscale( + c(range(geau::so_ii_population), value_legend), + population_palette, + trans = scales::log_trans() + )[-(1:2)] + text_legend = formatC( + as.integer(value_legend), + big.mark = " " + ) - if (legend_theme == TRUE && exists("theme_legend", inherits = FALSE)) { - temp = do.call(graphics::legend, theme_legend) - if (exists("text_legend", inherits = FALSE)) { - graphics::text( - x = temp[["rect"]][["left"]] + temp[["rect"]][["w"]], - y = temp[["text"]][["y"]], - labels = text_legend, - pos = 2 - ) - } - } + theme_legend = list( + title = sprintf("Population %s", year), + legend = text_legend, + x = "topright", + cex = .8, + bg = "white", + inset = 0.01, + fill = color_legend, + border = border, + text.width = graphics::strwidth(utils::tail(text_legend, 1)) + ) - return(invisible(NULL)) + if (add_legend == TRUE) { + return(theme_legend) + } else { + return(NULL) + } } diff --git a/geau/data-raw/so_ii_onrn.R b/geau/data-raw/so_ii_onrn.R index a6118f0..3fb1f76 100644 --- a/geau/data-raw/so_ii_onrn.R +++ b/geau/data-raw/so_ii_onrn.R @@ -4,25 +4,11 @@ so_ii_onrn = read.csv2( geau::current_version("data-common/so-ii/onrn"), row.names = 1 ) -class(so_ii_population) = "data.frame" -rownames(so_ii_population) = so_ii_population[["CODGEO"]] -selection = grep( - "PMUN|PSCDC|PTOT", - colnames(so_ii_population), - value = TRUE -) -so_ii_population = as.matrix( - so_ii_population[geau::so_ii_scope, selection] -) -year = gsub("PMUN", "20", selection) -year = gsub("PTOT", "19", year) -year = gsub("1919", "19", year) -year = gsub("1918", "18", year) -dimnames(so_ii_population)[[2]] = year +so_ii_onrn = so_ii_onrn[geau::so_ii_scope, ] # updating datasets # actual = setwd(file.path(system.file(package = "geau"), "..")) actual = setwd("geau") -usethis::use_data(so_ii_population, internal = FALSE, overwrite = TRUE) +usethis::use_data(so_ii_onrn, internal = FALSE, overwrite = TRUE) setwd(actual) diff --git a/geau/data-raw/so_ii_population.R b/geau/data-raw/so_ii_population.R index a771c06..48c3371 100644 --- a/geau/data-raw/so_ii_population.R +++ b/geau/data-raw/so_ii_population.R @@ -11,7 +11,7 @@ so_ii_population = readxl::read_xlsx( class(so_ii_population) = "data.frame" rownames(so_ii_population) = so_ii_population[["CODGEO"]] selection = grep( - "PMUN|PSCDC|PTOT", + "PMUN|PSDC|PTOT", colnames(so_ii_population), value = TRUE ) @@ -19,6 +19,7 @@ so_ii_population = as.matrix( so_ii_population[geau::so_ii_scope, selection] ) year = gsub("PMUN", "20", selection) +year = gsub("PSDC", "19", year) year = gsub("PTOT", "19", year) year = gsub("1919", "19", year) year = gsub("1918", "18", year) diff --git a/geau/data/so_ii_population.rda b/geau/data/so_ii_population.rda index bc3a1b17f4b91879f41c30609c3c58215fe403f4..40b9f762816882b26cb8a91b2948dbdab5d9a6ed 100644 GIT binary patch literal 6165 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 literal 5274 zcmV;L6lLo|T4*^jL0KkKS(eMKrT`rL|NsC0|NnpA|NsC0|NsC0|NsC0|NsC0|NsC0 z|MmTSfB)bQ|9$V0D)fC0hLX6Y@#)78y!7kNc@!Z%R7D&k=-rfV+yGS2nE+J%4JN=7 zQRJSf?IuT&PgB!RO;hxz=}$@Ni9b}^RBfi3k@%77pQ)7d(E!yvX{MCgPZWNMJtv_L zDD=vDX#>>622WE>H1L{FOrhyLL(~leMw%Ku2&RED8WSeco=l#CWMF}UX!M370GgNq zs-Kkb)b%t|^kE8kOrDt{enbY7YI#pahMF2iGz^nNCQJkw7*A2^Vq;LmVlza+lV|`; z5rom8G!sn|)M2AjO&F(&Jx0?6+CWSvg&5JOdX1Fz0Q65t^vND6rqt6<P-J?5G-w)W zp`c_2hJYTXfXSIbqe3P|fQF`qik_IKsp@{D+G=_u)b#*1kOL!W8V^v=(UG9g0BMn+ z00t8#ni>X!AOHXZAO?Y<qeg}x4FCf*DyDz|888Wnp@A3xCIJjaOqm!6U;qHnOaK8i z#KhA8CIC#CFaivk8emLDi~s-$fJCG~fRk!5sM-vgr;=?Zcz~ED)b#+-kPQUdo6??B zX)z3&Nv6_zh6Dzlrb83d^o<z-kN^N^0000QGzNx)LwX=M2h5;Pw^dmuzT4^lO`2OR z0Cy8%a>r3?N%=Or4i80k*ofY_S_mLY972YKAZhC-(&-$&;$)=#ENq+O@O>VX*3(Fm zOlBNy_#S@ABP^9U!@L(51YAI0${|-SBowB@iV*_x-<EjK@RlHC0CLN3h`?QC<3)Mw zT~(46>p?2R>9IsbQh~Ujq+ALZN0Y^H8|x=6i*O6ZB4=w>3wst1JH<lZ2Nza6^(N#> zNy0R1ZEI{2vQ=Nvb8Or#swF3UB<@0`GEWgJDLF7$Ay^-K>jbgdWWE??CTqf;;%i7U z-SHg9@Ce@FJx2lD;h&t1xs(1QD0CQ!b+UOhbRJ2_*w4Su3b;?25!m1sP_W1KN*z|Q z#b5VSWf6kXio!8;Dm!AOv7yU3n)xN%sX5i3hS~}i!<cN1kAg~T4k;B?`xLu9cJ|2H z+$iCslNI&K*~qG2uq9R&Qs;P@X<*L)5(`qOR&?za!O)4e@7`&<udr4i1#&KJ6s5D~ zBA`&fCdNABtOu$O$MC@&Gi#xh&wxld=O?CB0-6kBmmDMTOzIIBXQ|W%TMP)MI^K9P zf|tWwDU3~K+;F;<p|$JR3?*8!2cW{KEABOyr*d>r&)hsHIo`#RbcMSPQKW~>FEH7T z)a5)iLI8kAocjD>xy3^@om>u9!&lR6&Rc5h`6XpI7F_8HjmfluLq0I96Err!iXfAd z<?a|^t}!qD=yp+2*quJK_+#ZoS+I0*fUM~$>9*KsUJufhmCYUyO*n!Uxc885$Zqmx zMm68|T~K)Fbe50fK?T-W2!j<lLa07{_Xl?lN$<tmo@hoJF1>CUph+LJyJ##A64jC~ z(5n&N(5bNYf#~yQmy(?+vluFf&$3-NZs6KgqcbeXOx)6<7{ftvrDr*myZuR~M?1nv z@vU4H)<<6TL`pY;AijA8AB#rCnJ4bfXPYps9=MnMmIu_H@~Jip;xJmz2(qO2^bj;g z0`i16$qg)f*5>|{5m<C;roJgdCg3<7Em2lM`R&5^&n5a%)ZE51is^~xBVSOkyMFPZ zED3abjU8sFd{QJrChlrux7Cp~go#K@9$Rpu)J~=)JzOdb(xrfes*=B{P5fS|dilDg z?T}PtqJYsN0l+E_-~r7WS=wqcZw$~lax=V<P;_{Ks2h=mMUX_7DPXCCAOx(Rn1~)9 zDIM#P&PyXwhO7n>Io69*`K^1uakN>Zmn$NfyQdj8Hnjat$!Tz5hrYm1d9>?*ELeS~ z$}Bz$zYDqMBF*wSdRud-LMKiM7H%<MJ>(G~{7}wZ$mY|-D4>Qa^s#2cgy3>{DlbfM z8UeYqZDeXHsI2$@c8c)I7pg)&MRui^C^V>qQ*+s3v)=XByDiF?$lXS&DB%N2EU*m< zXibe`f?=?q0e7~7`v|i(tRWZ_MQ}*19p%RHN}2arnS4RQ)M!Y#>U-2D_ki?S>)5V! z*=(gGqp7%%wffi-Fq|1lUb7Bn#Ofqx^RHM`%zCG7=3TKTJt}AL8~MnyIlmvIjG;s7 z`}FLKe9fx0iLp6<%Us#Qw`<GUgE^pQ8bNUQP^3Jp4=9D;ChF)CZh-c$9Y_19$5P4z zTK?_qS0~k7N%!I`^L#dD;rH<Mde^jbgGUXEQsR9d6C`V#Xhm)9K(>9xjhb>~^ne^{ zvxy(D<1?er@&C~ZIjC7xo#{bs#JmV`I}>W)UhxRO<YU-!@Uzv%PSQiT9BxccB@P?E zL#DQ<*DOB)T`5SkzuR5Xc$!O#5kc;#eTcR@l#`!Xk&^v#Rd_O~y>-5*gF&&8A9EkZ ztM^2GX^=pvAz-IMqG=Cec}thb43r9z)piBA+pWb-?tU6a%;V^HNSk>>xnFpqf^E#Y zsA}9QS-zsd#%`gAs;cj7v-w*LTlN<lEhl=gupmNEW0j{-X8m|(Q~K`iuXxD&`-2a< zs23!7sZ2CvWHe@=&yYUZkB+F5IV{ZK!7VTO%!<Xy6_io_Q*GQYHZ=3trqd;?JY28# zit>eD6{6Mt9_{QniX;S{aDa7{S8>Q^$nRKCy(x?J`|eGh2P+<WEf->Ak>N#gZ1N42 zqo=t^VM_btZSV~pS((kfor5dT_$(-0JJxMD)iyF&sHo$&eJ^>jkk-dimnMbIle`+_ zH^y=mcL~T%A13{Ynr6u7mA8~vc)`R;9rL+rHPTf8+z%Y3t6~z@8{EhpUXdKb%zVV8 zxxuL$hAyVhc{{7dY0Cn$9<dg;`e80f%{VTS#kUsKmoRvR=JeE0Y3gd(szUt|iA-+$ zS9_|r@Ax}6P1mlhc-$Jj@EapZY+2v&&{$d7E^SLu_z)uarhxSRB0tMjtOO)_f8fn$ zaeNAHxE?o6`o$NeVxS`ZuK&cS6?{(Klo1?$p50tFZ<e$uwkenSYefWHsEWQEQ61z} z1zS*6d`|k@l0r#)JU*M`W!d&U)xQ?y%a<>+H!a$wt8gb77^OyOOU>|eT9+`^M6{`F zN?a)gIV?(zY*7uXR;sG2G_K97RabJ=i;|SQFRz71&;pDE0!2VY>VLWMyN^-R+HDsi zs{fzcYsb8?r0lfbYP3<ig0O-C1P}l#Goy#__4b&vciiD{r^`I4Av9_a$i?vSzz{(I zCPn(aD{Tf*{XgU7(NChUqp>)AjdYc0pBl3x0anNNvDi{|DT)BN1Jk4rU2LC<YOv$0 z<;PA7PHhqbWu5@Er#(OsfFS^hI3jj6<Ak!6lEjzEznz>dG{`ZsQ&Tyih#a&Yr>D?& z6+1hjsvv&pl0vLHmeHO4B8w$_zhP2yM^oiO+~h#j)<*Y^NfgD=iNp<=MoH;Q)!~w5 zM*wvSTy98*s0&HFR(zsVCOsijCrX6=at*B8IYNn{X2I#zV$<cF?urcFZQnlk0c0W# z4KJb&#D0nP_;Si0g;c_5O^~nILNZ)`_O?GknbwXmSTpq()&i$j*@L9RRfXzqzNA_T z1;m!Gio0IP8W4=-Wo+mVhMndro7Iz<HC(Jy{U2i2D)}h)$r&58jsAZjAkaAh0tAQO z9FqYC0w7{U87-=JF_JyRG9^YY0RaFJ0Rtc*KnN^=2*?1F%b*BQkw6XY-avOtwu7aX zoYKgXT6t#1AcQH&ClMH-1#-HrSgmT0FR0VkX7{eQZMw5Wsuc0iN<<j}kT$J9RF_yC z*6}ZzP<c$Mvo2;J0RSQZ2mv4v3JEG(8knsFEd+rV8y)VJOAi|;LGdX9VT(+nYBVi{ zW|B(H=^{rkvCR=80>>PY!=pYEmkZpxw1w4ZVv{~y3~$+cyrNL&p2c|RF(cSwOd=(U zNCW)AVvR=o8vGKlHG{+uNfJo62Z6q=<oV0m>0@v0fWAy)CXH^47}~Nj5;sH^`nA67 zSNxt|Ygxt)*Svn4=z!Iw9V;+z&)3z$%Wu;N{7yk^Cw6EHMp{>g2)rC);l}4e9lf^k zwiL*s_z9sm9ktyoJ^doyYPv|p0S)=p=X96dp6^A~b-f+-4-J8?+w8X)8Vs{bne|=B zA-;hiAt56m$OMZb$dU;lG6F~eAQCizFi09;+R2Ip;1HA$H31OQfI?uJ1PzElng)^t zz!(BRgCI!A$ifVW5+sU9Ng_fh$g(0xgd!3wiby1hA_R(rk|c`KBeE)>)k+c+f>H@1 zBLE--*f<+dB!VGAP6!}LI2uGr21E)%l0~E`6{J>?85ATb29Q>SQKSKo1HzS6MUbRg zL1Y?1WMl-8LPY{Wl8^?FQIseYh%|!Ilv+lTQi({RNDPf24Fu3O!H7*jkRgDC2w>a_ z27w@G5@6B>lLrGz1k@m6fIu+~K-38#0su%*I1nU|B@qk&08l^z1cA1k4FgUE0tkp| zAjlFaAd&=w2&E#lAju&hNhFMj$VLi@NRMM;fYmyWNq^GWUjFa1z_pRDg)q>x5Mgcw z#UmVyLIwsCRB1BP;J&VcTY}dRPYal3wQ*{)gaF5Yn-4dKz0g}uiXG3H=jBfJIs7bs zOSq?7nzZy#cRVLy!PaCEw|W0?xlFD2h1*=@MhLx~epHChOkCwklf`9Hslr+-Glx)y zpBGrnsrvDk%uFkI)sF;(hf%1Ya3WdFcAb@D<74jiczj+)PBv<*pw{Z}>UEINa8w-K zqZifpVr<^!CDBa19lH)^f~Y>-`Q!~9e1u5=|H2q%HA9RrY*AO+Lnr`epq5w=0F+F{ zxXT<EwUGwV7X?$>=4{T*Ml0EajiGh6&8R$*mKdQ{j@)@lWxqz%S^FVlRO3!sc!H#f zsbi0`zcT%%0?`pdW7j}1JQGUMz%6^uDz54#wjAVaYA&(&xy@d;j@oUxyTm*XORe%N zOXvnXdRn>~fjgKxo|1rgynX(|N2=U&S-r0zp40MoRr8nNI+z>HVU<#sU4*^g*1Sx8 zu9lB|6U)TTbvtfKtq)bE;co5^T@=kh?`c5Md0vkjFsuO#4@3aKKo`PGv>afegxfAi z=1(SU^5$k6XJ9+f+N7|kQ#!r*dpqpL&v9dxxq;;{FjUjb^g{{=%>OM=FAuMvbI=Wx z7Z;1;Cg!m;u^cT;5aPN{GE}cGmnf!>N8af8-h(HX&uwg3=dr5hWvzA%`mSOMU~1@t zfw#)36OGv6T;}u{j)z@wTy4DsKvnFQMh*c4*MtH90MXED_^l$evH!%s*8`a%)X%~H zf`&)ig;i6o?DaZMdbxHREpFnUigAryMsC1s>iwY+A!U6!!x)Ost$MQVa;d^j)9hN= zGFp{!AXP2|j|)9W6pfdiHNY5N5j;B*@E}+!ez!Y5@W`V_Y~GINE6~otMF`$z^&%MC zB2)TEQrAPKMjt!fLE|TeTK?xZkKC}WHclaOt|}$zkEiKvu`C8+dg{_ia%lm)^(+_8 zEAKHt4#&KrfxFZcMCD=!Dcev$>+kc%^7CEK@A~cSoW-lFuwJeTZ=hy<PlbI|YPTW> zZL#LEHGC$EdEe%6E_!|T`(Jx|RL<rR(B^v@h3#=LWkMf5AnWtm%r4)D+~_T-+C&n_ zn!y`33AAhkL~Pl!WZA*3qORc?h%J=%7;ma3j36itHBJ+JQs-x*BXANJIb2T>od7z_ zY9d|fxBA<y4U`j4kKcB-y@rnN^CL@k4efQ*9z=V%i**1sUcZ^c&S|hQYvHw*HWgxI zWZK8YHX5xZyj$!}5EBvz;%8_H-9S3N3cXH$4-Z*OVW5a=Vg>IDmAI{JkpW<c00PJ$ zY&Tn>k;J8L_<6DCF&TlnxuW$CLTE4?n`n4rRnboZV~;6ej9vEE?;E(9Z1yo2uD0Hi zA_$LhvSbLRzE0TF9^Jq|_juLdFvA57b(sL<S)c*XdOmjZ8xvj3OJIi5D&2g#?<)kV zAnk4KaCr>&&ktp@<$e9jmT);6H_sgqOf1e_Lbut!F*ciSYR+6wX|nHXQ$!)L1=Cix z^>$F9=SYM_q#NlOmDc3ZA<5E>xrjYPu{~IYP7Df)me-}-;i168qoR!<2HRC;_sdvP z&NTqzpgsf>i?_kcmHT)ZF$2Yl`Mh2V-VQx1h5QBj@H`kU!#->7xr}a8N5pJurF6~l zw^du~IQu(G@I%$aa&wy+mE>cI48Bhi&T8{3acfE7=y+Q17l#Od5=<fkJ_oq(l`#f_ z$!Cedw{Yl(cCg`!V&8JhP-1R@VqWBQ)C4|jQ$}=PCY`p~2J@CKf=O|Ddy;`NklB;E zeUNrb4KZr*bc+VLqo-$9nv{MyO2Xze;_V`)>${*0Hn}!+wh-UM=VBP0eO9>p8>z`l zyQ(;d4hHGp=*u0n{0Q^uKH*kj*}o*b8yp4VW5C!`S1uc}3OghcG8s67^Yw=)%P0m6 z;Q(PQUAwf}+ujjzGVr|=46SjO0@+b%l(<hB>caCkdD3>p?vJt3&myb_8i=Wg9p}0r zA&afWY9T?l(Jyu);AZMKDL96E>u4xonajwIf>mRUjE8YlSjcAQoOr`rir%boo1`j% zc(LcJCv^65sI{+DC~mC{SDAfgw|kHcZmvS)q2k1jR!*(bNXcWJl}}bqQoTjXvR1xX zNi^jXk2z@T6I+=|f_8;#5|w>jP(~%nb<Grotrwd73D9h$MZ(6LuYgssZ)w|@@%u%x ztA?E#U$?`jEkt4!tYt80va0f{lI$BwlY=y?JDbZl@a!O<C*4@2mp#2H2~gkK%sN7v z^tJC+^|x6T3@GqjM6|6$LUL6h1(1Qnc#KF(v@9K54@gn!aAF~}q{*XEV}xXY?IP2Q glZ$b*i_EQLLmOz4y5^zf0E6xqaz!{$ke17>reR^)Z2$lO diff --git a/geau/man/so_ii_population.Rd b/geau/man/so_ii_population.Rd index e2fd737..7719fce 100644 --- a/geau/man/so_ii_population.Rd +++ b/geau/man/so_ii_population.Rd @@ -5,7 +5,7 @@ \alias{so_ii_population} \title{Population for so-ii} \format{ -numeric matrix +numeric matrix 78 rows, 33 columns \describe{ \item{row}{commune as in so_ii_scope} \item{column}{year} -- GitLab