diff --git a/DESCRIPTION b/DESCRIPTION index e6202da82f58a6de9ff22851e7dca3240638b2be..5bc568d6ba58a67ce3ddb1888dde75a2051a4aee 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -25,6 +25,7 @@ Imports: forcats, ggiraph, ggplot2, + ggtext, glue, gouvdown (>= 0.0.0.9000), lubridate, diff --git a/NAMESPACE b/NAMESPACE index 059c749a6b0d30d0c925c4b4b1bc1825dec9d90e..919ae8f0708e4588ff51c7e136d2471fc8645db0 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -3,9 +3,11 @@ export("%>%") export(creer_graphe_1_1) export(creer_graphe_1_3) +export(creer_graphe_1_4) export(format_fr_pct) importFrom(attempt,stop_if_not) importFrom(dplyr,arrange) +importFrom(dplyr,case_when) importFrom(dplyr,desc) importFrom(dplyr,filter) importFrom(dplyr,first) @@ -20,6 +22,7 @@ importFrom(forcats,fct_reorder) importFrom(ggiraph,geom_point_interactive) importFrom(ggiraph,ggiraph) importFrom(ggplot2,aes) +importFrom(ggplot2,coord_flip) importFrom(ggplot2,element_text) importFrom(ggplot2,geom_bar) importFrom(ggplot2,geom_col) @@ -27,8 +30,10 @@ importFrom(ggplot2,geom_text) importFrom(ggplot2,ggplot) importFrom(ggplot2,labs) importFrom(ggplot2,scale_fill_manual) +importFrom(ggplot2,scale_x_discrete) importFrom(ggplot2,scale_y_continuous) importFrom(ggplot2,theme) +importFrom(ggtext,element_markdown) importFrom(glue,glue) importFrom(lubridate,make_date) importFrom(magrittr,"%>%") diff --git a/R/creer_graphe_1_4.R b/R/creer_graphe_1_4.R new file mode 100644 index 0000000000000000000000000000000000000000..3e318dc95b0847d02bc16f050647505441f73a7a --- /dev/null +++ b/R/creer_graphe_1_4.R @@ -0,0 +1,73 @@ +#' Creation du graphique en barres surfaces artificialisees en volume (Teruti-Lucas) +#' @description Graphique en barres surfaces artificialisees en volume (Teruti-Lucas) +#' +#' @param millesime_teruti une année parmi les millesimes sélectionnables par l'utilisateur, au format numerique. +#' +#' @return Un diagramme en barres +#' +#' @importFrom dplyr filter select mutate group_by desc arrange case_when +#' @importFrom forcats fct_inorder fct_drop +#' @importFrom ggplot2 ggplot aes scale_y_continuous theme geom_text geom_col scale_fill_manual scale_x_discrete coord_flip +#' @importFrom glue glue +#' @importFrom lubridate make_date +#' @importFrom tidyr spread gather +#' @importFrom tricky set_standard_names +#' @importFrom ggtext element_markdown +#' +#' @export +#' +#' @examples +#' creer_graphe_1_4(millesime_teruti=2018) + +creer_graphe_1_4 <- function(millesime_teruti){ + + # Creation de la table utile a la production du graphique + data <- teruti %>% + dplyr::mutate(valeur=as.numeric(.data$valeur)) %>% + # dplyr::filter(.data$CodeZone == "52" & .data$TypeZone == "R\u00e9gions" | .data$CodeZone %in% c("44","49","53","72","85") & .data$TypeZone == "D\u00e9partements", + # .data$date == lubridate::make_date(millesime_teruti,"01","01")) %>% + dplyr::filter(.data$CodeZone %in% c("44","49","53","72","85") & .data$TypeZone == "D\u00e9partements", + .data$date == lubridate::make_date(millesime_teruti,"01","01")) %>% + tidyr::spread(key=.data$variable,value=.data$valeur,fill=0) %>% + tricky::set_standard_names() %>% + dplyr::arrange(.data$typezone) %>% + dplyr::mutate(zone = forcats::fct_drop(.data$zone) %>% forcats::fct_inorder(), + voiries=.data$sols_revetus, + hors_voiries=(.data$sols_batis+ .data$sols_stabilises+ .data$autres_sols_artificialises ) + ) %>% + dplyr::select(.data$typezone,.data$codezone,.data$zone,.data$voiries,.data$hors_voiries)%>% + tidyr::gather(variable,valeur,.data$voiries:.data$hors_voiries)%>% + dplyr::mutate(variable = replace(.data$variable, .data$variable=="hors_voiries","surfaces artificialis\u00e9es hors voiries"), + codezone = replace(.data$codezone, .data$codezone=="52","R\u00e9gion"))%>% + dplyr::mutate(variable=factor(.data$variable,levels=c("surfaces artificialis\u00e9es hors voiries","voiries"))%>% forcats::fct_inorder()) %>% + dplyr::group_by(.data$typezone,.data$codezone,.data$zone) %>% + dplyr::arrange(.data$codezone, dplyr::desc(.data$variable))%>% + # dplyr::mutate_at(.funs = list(prec = lag), + # .vars = dplyr::vars(.data$valeur)) %>% + # dplyr::mutate(position = dplyr::case_when( + # .data$prec < 40000 ~ cumsum(.data$valeur)+8000, + # .data$typezone == "Départements" & .data$variable == "voiries" ~ cumsum(.data$valeur), + # TRUE ~ cumsum(.data$valeur) - 0.5 * .data$valeur + # )) + dplyr::mutate(position = cumsum(.data$valeur) - 0.5 * .data$valeur) + + graph_1_4<-data %>% + ggplot2::ggplot(ggplot2::aes(x=.data$zone,y=.data$valeur)) + + ggplot2::geom_col(ggplot2::aes(fill = .data$variable), width = 0.9)+ + ggplot2::geom_text(ggplot2::aes(y = .data$position, label = round(.data$valeur,0), group =.data$variable), color = "white", size=3)+ + ggplot2::labs(title= glue::glue("Surfaces artificialis\u00e9es en hectares (Teruti-Lucas)"), + subtitle="<span style = 'color:#D08A77'> Hors voiries</span> et <span style = 'color:#B07F73'> en voiries</span>", + x="", + y="", + fill="", + caption = glue::glue("Source : Teruti-Lucas {millesime_teruti}"))+ + ggplot2::theme(legend.position = "none", + plot.subtitle = ggtext::element_markdown(size = 12, lineheight = 1.2))+ + ggplot2::scale_y_continuous(labels = scales::number_format(suffix = "", accuracy = 1)) + + ggplot2::coord_flip() + + ggplot2::scale_x_discrete(limits=rev) + + ggplot2::scale_fill_manual(values = gouvdown::gouv_palettes[["pal_gouv_i"]][1:2]) + + return(graph_1_4) + +} diff --git a/devstuff_history.R b/devstuff_history.R index 9f9d5d215437a3b17c78ef45b8c5e7e779075b10..d648d37b3fe235f29c1ce87bd9d7c350f2e9c8a1 100644 --- a/devstuff_history.R +++ b/devstuff_history.R @@ -36,7 +36,10 @@ usethis::use_vignette("ac-ch1-3","ac- Chapitre 1 Graphe 3") usethis::use_r("creer_graphe_1_3") usethis::use_test("creer_graphe_1_3") - +##creer_graphe_1_4 +usethis::use_vignette("ac-ch1-4","ac- Chapitre 1 Graphe 4") +usethis::use_r("creer_graphe_1_4") +usethis::use_test("creer_graphe_1_4") ## A faire tourner avant chaque commit # usethis::use_r("globals.R") # liste les objets à passer en variables globales diff --git a/inst/rmarkdown/templates/publication/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/publication/skeleton/skeleton.Rmd index e383d763d0449a85666e168c81e5f1b24b0a0c63..f48f5a119e4090b98daba1979b1505f7483159a4 100644 --- a/inst/rmarkdown/templates/publication/skeleton/skeleton.Rmd +++ b/inst/rmarkdown/templates/publication/skeleton/skeleton.Rmd @@ -37,3 +37,10 @@ creer_graphe_1_3( params$millesime_teruti) ``` texte... + +```{r graph surfaces artificialisees en volume} +creer_graphe_1_4( params$millesime_teruti) +``` + + + diff --git a/man/creer_graphe_1_4.Rd b/man/creer_graphe_1_4.Rd new file mode 100644 index 0000000000000000000000000000000000000000..ec29515ccb58aa4f63ca5ee669a80114243df8cb --- /dev/null +++ b/man/creer_graphe_1_4.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creer_graphe_1_4.R +\name{creer_graphe_1_4} +\alias{creer_graphe_1_4} +\title{Creation du graphique en barres surfaces artificialisees en volume (Teruti-Lucas)} +\usage{ +creer_graphe_1_4(millesime_teruti) +} +\arguments{ +\item{millesime_teruti}{une année parmi les millesimes sélectionnables par l'utilisateur, au format numerique.} +} +\value{ +Un diagramme en barres +} +\description{ +Graphique en barres surfaces artificialisees en volume (Teruti-Lucas) +} +\examples{ +creer_graphe_1_4(millesime_teruti=2018) +} diff --git a/tests/testthat/test-creer_graphe_1_4.R b/tests/testthat/test-creer_graphe_1_4.R new file mode 100644 index 0000000000000000000000000000000000000000..690ee99b00e27a3223e0df3df2dd760dad07525f --- /dev/null +++ b/tests/testthat/test-creer_graphe_1_4.R @@ -0,0 +1,7 @@ +test_that("creer_graphe_1_4 fonctionne", { + + # Test que le graphe est un ggplot + objet <- creer_graphe_1_4(millesime_teruti = 2018) + testthat::expect_equal(attr(objet, "class"), c("gg","ggplot")) + +}) diff --git a/vignettes/ac-ch1-4.Rmd b/vignettes/ac-ch1-4.Rmd new file mode 100644 index 0000000000000000000000000000000000000000..74bfd1ac530753c0a4ba24ad9fd757dc933fc467 --- /dev/null +++ b/vignettes/ac-ch1-4.Rmd @@ -0,0 +1,25 @@ +--- +title: "ac- Chapitre 1 Graphe 4" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{ac- Chapitre 1 Graphe 4} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +ggplot2::theme_set(gouvdown::theme_gouv(plot_title_size = 14, subtitle_size = 12, base_size = 10, caption_size = 10) + + ggplot2::theme(plot.caption.position = "plot")) +``` +# Descriptif +La fonction `creer_graphe_1_4()` produit le graphique en barres des surfaces artificialisees en volume (Teruti-Lucas) + +```{r setup} +library(propre.artificialisation) + + creer_graphe_1_4(millesime_teruti=2018) +``` diff --git a/vignettes/test.R b/vignettes/test.R index 9eac1d9c84272ddf07d998f2a26f5fd260ba1437..b26bdbf24ac3972fb51be8549b50d0a404df785f 100644 --- a/vignettes/test.R +++ b/vignettes/test.R @@ -2,42 +2,74 @@ library(dplyr) library(gouvdown) millesime_teruti <- 2018 -# Creation de la table utile a la production du graphique -data <- teruti %>% - dplyr::mutate(valeur=as.numeric(.data$valeur)) %>% - dplyr::filter(.data$CodeZone == "52" & .data$TypeZone == "R\u00e9gions" | .data$CodeZone %in% c("44","49","53","72","85") & .data$TypeZone == "D\u00e9partements", - .data$date == lubridate::make_date(millesime_teruti,"01","01")) %>% - tidyr::spread(key=.data$variable,value=.data$valeur,fill=0) %>% - tricky::set_standard_names() %>% - dplyr::mutate (voiries=(.data$sols_revetus )/.data$tous_sols*100, - hors_voiries=(.data$sols_batis+ .data$sols_stabilises+ .data$autres_sols_artificialises )/.data$tous_sols*100 - ) %>% - dplyr::select(.data$codezone,.data$zone,.data$voiries,.data$hors_voiries)%>% - tidyr::gather(variable,valeur,.data$voiries:.data$hors_voiries)%>% - dplyr::mutate(variable = replace(.data$variable, .data$variable=="hors_voiries","surfaces artificialisées hors voiries"), - codezone = replace(.data$codezone, .data$codezone=="52","Région"))%>% - dplyr::mutate(variable=factor(.data$variable,levels=c("surfaces artificialisées hors voiries","voiries"))%>% forcats::fct_inorder()) - -graph_1_3<-data %>% - ggplot2::ggplot(ggplot2::aes(x=.data$codezone,y=.data$valeur,fill=.data$variable)) + - ggplot2::geom_bar(stat="identity")+ - ggplot2::labs(title= glue::glue("Part des surfaces artificialis\u00e9es dans la surface \nd\u00e9partementale et r\u00e9gionale en {millesime_teruti} en % (Teruti-Lucas)"),subtitle="",x="",y="", - fill="", - caption = glue::glue("Source : Teruti-Lucas {millesime_teruti}"))+ - - gouvdown::scale_fill_gouv_discrete(palette = "pal_gouv_fr")+ - # ggplot2::geom_text(ggplot2::aes(y=.data$valeur , label=paste0(round(.data$valeur,1),"%")),position= ggplot2::position_dodge(width=0), vjust=0, size=3)+ - ggplot2::theme(legend.position = "bottom")+ - ggplot2::scale_y_continuous(labels = scales::number_format(suffix = " %", accuracy = 1)) - -return(graph_1_3) - +#' Creation du graphique en barres surfaces artificialisees en volume (Teruti-Lucas) +#' @description Graphique en barres surfaces artificialisees en volume (Teruti-Lucas) +#' +#' @param millesime_teruti une année parmi les millesimes sélectionnables par l'utilisateur, au format numerique. +#' +#' @return Un diagramme en barres +#' +#' @importFrom dplyr filter select mutate group_by desc arrange +#' @importFrom forcats fct_inorder +#' @importFrom ggplot2 ggplot aes geom_bar labs scale_y_continuous theme geom_text geom_col scale_fill_manual +#' @importFrom scales number_format +#' @importFrom glue glue +#' @importFrom lubridate make_date +#' @importFrom tidyr spread gather +#' @importFrom tricky set_standard_names +#' +#' @export +#' +#' @examples +#' creer_graphe_1_4(millesime_teruti=2018) +creer_graphe_1_4 <- function(millesime_teruti){ + # Creation de la table utile a la production du graphique + data <- teruti %>% + dplyr::mutate(valeur=as.numeric(.data$valeur)) %>% + dplyr::filter(.data$CodeZone == "52" & .data$TypeZone == "R\u00e9gions" | .data$CodeZone %in% c("44","49","53","72","85") & .data$TypeZone == "D\u00e9partements", + .data$date == lubridate::make_date(millesime_teruti,"01","01")) %>% + tidyr::spread(key=.data$variable,value=.data$valeur,fill=0) %>% + tricky::set_standard_names() %>% + dplyr::arrange(.data$typezone) %>% + dplyr::mutate(zone = forcats::fct_drop(.data$zone) %>% forcats::fct_inorder(), + voiries=.data$sols_revetus, + hors_voiries=(.data$sols_batis+ .data$sols_stabilises+ .data$autres_sols_artificialises ) + ) %>% + dplyr::select(.data$typezone,.data$codezone,.data$zone,.data$voiries,.data$hors_voiries)%>% + tidyr::gather(variable,valeur,.data$voiries:.data$hors_voiries)%>% + dplyr::mutate(variable = replace(.data$variable, .data$variable=="hors_voiries","surfaces artificialis\u00e9es hors voiries"), + codezone = replace(.data$codezone, .data$codezone=="52","R\u00e9gion"))%>% + dplyr::mutate(variable=factor(.data$variable,levels=c("surfaces artificialis\u00e9es hors voiries","voiries"))%>% forcats::fct_inorder()) %>% + dplyr::group_by(.data$typezone,.data$codezone,.data$zone) %>% + dplyr::arrange(.data$codezone, dplyr::desc(.data$variable))%>% + mutate_at(.funs = list(prec = lag), + .vars = vars(valeur)) %>% + dplyr::mutate(position = dplyr::case_when( + .data$prec < 40000 ~ cumsum(.data$valeur)+8000, + .data$typezone == "Départements" & .data$variable == "voiries" ~ cumsum(.data$valeur), + TRUE ~ cumsum(.data$valeur) - 0.5 * .data$valeur + )) + # dplyr::mutate(position = cumsum(.data$valeur) - 0.5 * .data$valeur) + graph_1_4<-data %>% + ggplot2::ggplot(ggplot2::aes(x=.data$zone,y=.data$valeur)) + + ggplot2::geom_col(ggplot2::aes(fill = .data$variable), width = 0.9)+ + ggplot2::geom_text(ggplot2::aes(y = .data$position, label = round(.data$valeur,0), group =.data$variable), color = "black", size=3)+ + ggplot2::labs(title= glue::glue("Surfaces artificialis\u00e9es en {millesime_teruti} (Teruti-Lucas)"),subtitle="",x="",y="", + fill="", + caption = glue::glue("Source : Teruti-Lucas {millesime_teruti}"))+ + ggplot2::theme(legend.position = "bottom")+ + ggplot2::scale_y_continuous(labels = scales::number_format(suffix = "", accuracy = 1)) + + ggplot2::coord_flip() + + ggplot2::scale_x_discrete(limits=rev) + + ggplot2::scale_fill_manual(values = gouvdown::gouv_palettes[["pal_gouv_i"]][1:2]) + return(graph_1_4) +}