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.
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)) )
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)
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
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()
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.
Deux cas de figures se présentent pour l'export :
rmarkdown
, dans un chunk spécifique. Ou alors on l'exporte avec ggsave
pour d'autres types de documents.ajout_logo_sgdf
comme suit, en précisant si besoin avec l'argument type
quel logo utiliser :ajout_logo_sgdf(graph_iris)
Un tableau vaut parfois mieux qu'un graphique. Il faut toutefois ne pas y mettre trop d'informations (sinon privilégier un export Excel).
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()
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.
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()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.