Dans ce notebook, ous allons représenter la donnée à l’aide d’un streamgraph.

Lecture des données

Chargeons les librairies, lisons nos données :

library(tidyverse)

source("helpers.R", encoding = "UTF-8")

flux <- read_csv("../data/obs_artif_conso_com_2009_2020_V2.csv")

Récupérons aussi notre palette de couleurs :

myPalette <- readRDS("myPalette.rds")

Installation de la librairie streamgraph

devtools::install_github("hrbrmstr/streamgraph")

Streamgraph

Récupérons les données de flux d’Aix-en-Provence :

df <- flux %>% getStatsFlux("13001")
## Note: Using an external vector in selections is ambiguous.
## i Use `all_of(myCols)` instead of `myCols` to silence this message.
## i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.

Réalisons le streamgraph sur Aix-en-Provence :

library(streamgraph)

# L'ordre des inverse dans les streamgraphs
df$type <- factor(df$type, levels = c("Inconnu", "Mixte", "Activité", "Habitat"))

# Plot
df %>%
  streamgraph("type", "value", "year", sort = FALSE) %>%
  sg_axis_x(1, "Année", "%Y") %>% 
  sg_fill_manual(rev(myPalette))

factor permet de définir l’ordre d’affichage des entités. Et nous utilisons rev(myPalette) car streamgraph inverse la palette.

Fonction makeStream

Nous pouvons créer une fonction qui retourne le streamgraph de n’importe quelle commune :

makeStream <- function(flux, codeInsee) {
  
  df <- flux %>% getStatsFlux(codeInsee)
  
  # L'ordre des inverse dans les streamgraphs
  df$type <- factor(df$type, levels = c("Inconnu", "Mixte", "Activité", "Habitat"))
  
  # Plot
  df %>%
    streamgraph("type", "value", "year", sort = FALSE) %>%
    sg_axis_x(1, "Année", "%Y") %>% 
    sg_fill_manual(rev(myPalette))
}

Voici une utilisation de la fonction makeStream sur Marseille :

flux %>% makeStream("13055")
## Warning in widget_html(name = class(x)[1], package = attr(x, "package"), :
## streamgraph_html returned an object of class `list` instead of a `shiny.tag`.

Ou sur Toulon :

flux %>% makeStream("83137")
## Warning in widget_html(name = class(x)[1], package = attr(x, "package"), :
## streamgraph_html returned an object of class `list` instead of a `shiny.tag`.

Cette fonction nous sera bien utile dans l’application Shiny.

Dimensions d’une dataviz

Voici selon moi les dimensions d’une dataviz :