knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  message = FALSE,
  error = FALSE,
  warning = FALSE,
  fig.height = 5,
  fig.width = 8
)

options(rmarkdown.html_vignette.check_title = FALSE)

L'unité graphique et la forme sont des éléments importants lorsque l'on souhaite communiquer des chiffres. Les SGDF possèdent une charte graphique forte et puissante (https://www.sgdf.fr/vos-ressources/doc-en-stock/category/147-elements-graphiques). L'utiliser dans les analyses statistiques permet ainsi d'apporter de la cohérence et du style aux résultats.

Un certain nombre de fonctions ont été définies pour faciliter ce travail d'utilisation de la charte graphique.

Palettes

Les couleurs principales de la charte ont été incluses dans les palettes. Des déclinaisons continues sont aussi proposées pour des analyses qui le demandent.

Les couleurs sont interpolées dans des échelles (scale) de façon à pouvoir remplir un grand nombre de valeurs. On peut aussi y accéder individuellement au travers de la fonction sgdf_colors(). Les couleurs de la charte sont suffixées par "_1". Les autres suffixes correspondent à des teintes différentes.

pal <- intuthu::sgdf_palettes

labels <- names(pal)

do.call(
  pals::pal.bands,
  c(pal, list(labels = labels, gap = 0.2, show.names = FALSE))
)

Réaliser un graphique

Les graphiques sont faits avec ggplot2 et les packages correspondants. Pour des versions interactives, on peut se tourner vers ggiraph ou plotly selon les besoins.

library(intuthu)
library(tidyverse)

Thème

La première étape est d'ajouter un thème au moyen de theme_sgdf() ou theme_sgdf_carte() pour les cartes. On peut régler la taille des lignes de la grille par le paramètre base_line_size (voire les supprimer en le passant à 0).

graph_iris <- ggplot(iris) +
  geom_point(aes(x = Sepal.Width, y = Petal.Length, color = Species),
             size = 1.5) +
  labs(title = "Iris",
       subtitle = "Croisement des points",
       caption = "Jeu de données Iris") +
  theme_sgdf(base_line_size = 0.5)

graph_iris

Couleurs

On ajoute ensuite les couleurs au moyen des échelles : scale_color_sgdf_discrete(). Des versions avec fill ou en continu avec continuous sont aussi proposées. On peut inverser si besoin avec reverse = TRUE ou changer de palette avec palette. On doit dans ce dernier cas fournir une des palettes SGDF pré-construites.

graph_iris <- graph_iris +
  scale_color_sgdf_discrete()

Polices

Lorsqu'on ajoute des éléments de texte, on doit en préciser la police (Sarabun). Dans le thème, cela est déjà fait par défaut.

as_tibble(mtcars) %>%
  bind_cols(car = row.names(mtcars)) %>%
  ggplot(aes(
    x = mpg,
    y = disp,
    color = hp,
    label = car
  )) +
  geom_text(size = 3.5, family = "Sarabun") +
  scale_color_sgdf_continuous(palette = "pal_sgdf_rouge_pk", reverse = TRUE) +
  theme_sgdf(base_line_size = 0.5)

Ces polices sont disponibles sur Google Fonts et doivent être installées en amont pour pouvoir être utilisées. Pour les documents HTML, la dépendance est ajoutée automatiquement :

  • https://fonts.google.com/specimen/Sarabun ;
  • https://fonts.google.com/specimen/Caveat+Brush ;
  • https://fonts.google.com/specimen/Raleway.

Export

Deux cas de figures se présentent pour l'export :

ajout_logo_sgdf(graph_iris)

Faire un tableau

Un tableau vaut parfois mieux qu'un graphique. Il faut toutefois ne pas y mettre trop d'informations (sinon privilégier un export Excel).

Personnalisation des tableaux statiques

Les tableaux dits "statiques", destinés à une impression ou à une vue figée sont construits avec flextable (https://davidgohel.github.io/flextable/index.html), qui permet d'enchaîner les opérations. La fonction theme_flex_sgdf() permet d'ajouter un thème propre aux SGDF.

Pour les exports HTML, utiliser autofit() à la fin pour ajuster les auteurs.

library(flextable)

# jeu de données
titanic_10 <- head(as_tibble(Titanic), 10)

# tableau
flextable(titanic_10) %>%
  theme_flex_sgdf()

On peut aussi ajouter le logo pour les exports, modulo le passage au format image avec passage_gt_img() (et donc l'utilisation de ggsave() pour les sauvegardes) :

flextable(titanic_10) %>%
  theme_flex_sgdf() %>%
  passage_flex_img() %>%
  ajout_logo_sgdf()

Personnalisation des tableaux dynamiques

Pour les tableaux dynamiques, sur un format web (un tableau de bord par exemple), on préferera reactable (https://glin.github.io/reactable/index.html). La personnalisation du thème se fait directement dans le fichier CSS associé.

Ce package est très puissant et permet de réaliser sans serveur des opérations de tri, des graphiques légèrement interactifs, des recherches dans des tableaux, etc. Le coût d'entrée peut cependant être élevé et le passage par du JavaScript rend parfois la reproductibilité difficile.

Pictogrammes

La nouvelle charte graphique fait une grande utilisation des pictogrammes. La fonction picto() permet de les charger, de les coloriser et de les mettre à l'échelle facilement.

picto("feuille", couleur = "vert_farfa", scale = "80")

La liste des picto est la suivante :

# liste des picto
df_picto <-
  tibble(
    path = list.files(
      system.file("resources/picto", package = "intuthu"),
      full.names = TRUE
    ),
    nom = str_remove(str_extract(path, "[^_]+$"), ".png"),
    type = str_extract(path, "SIGNES(.*)_")
  ) %>%
  select(nom, type, path) %>%
  mutate(
    type = fct_recode(
      type,
      "Communs" = "SIGNES_COMMUNS_",
      "Farfadets" = "SIGNES_FARFADET_",
      "Louveteaux-Jeannettes" = "SIGNES_LOUVETEAUX_JEANNETTES_",
      "Scouts-Guides" = "SIGNES_SCOUTS_GUIDES_",
      "Pionniers-Caravelles" = "SIGNES_PIONNIERS_CARAVELLES_",
      "Compagnons" = "SIGNES_COMPAGNONS_"
    ),
    type = fct_relevel(
      type,
      "Communs",
      "Farfadets",
      "Louveteaux-Jeannettes",
      "Scouts-Guides",
      "Pionniers-Caravelles",
      "Compagnons"
    )
  ) %>% 
  arrange(type, nom)

# tableau
df_picto %>%
  flextable() %>%
  set_header_labels(nom = "Nom", type = "Type", path = "Picto") %>% 
  bg(j = "path", bg = sgdf_colors("bleu_instit_1")) %>%
  align(j = "path", align = "center") %>% 
  align(j = "nom", align = "left") %>% 
  align(j = "type", align = "left") %>% 
  compose(j = "path",
          value = as_paragraph(as_image(
            src = path,
            width = .40,
            height = .40
          ))) %>%
  theme_flex_sgdf()


sgdf-stat/intuthu documentation built on Feb. 7, 2021, 11:08 p.m.