ggplot2 thèmes et couleurs de fond : les 3 éléments - Logiciel R et visualisation de données


Ce tutoriel R décrit comment modifier l’apparence d’un thème graphique (couleur de fond, couleur du panneau de fond, lignes de la grille) en utilisant le logiciel R et le package ggplot2. Vous apprendrez également comment utiliser les thèmes de base de ggplot2 et comment créer votre propre thème.

Préparer les données

Le jeu de données ToothGrowth est utilisé dans les exemples ci-dessous :

# Convertir la variable dose de type "numeric" au type "factor"
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
head(ToothGrowth)
##    len supp dose
## 1  4.2   VC  0.5
## 2 11.5   VC  0.5
## 3  7.3   VC  0.5
## 4  5.8   VC  0.5
## 5  6.4   VC  0.5
## 6 10.0   VC  0.5

Assurez-vous que la variable dose soit convertie en une variable de type “factor” en utilisant le script de R ci-dessus.

Exemple de graphes

library(ggplot2)
p <- ggplot(ToothGrowth, aes(x=dose, y=len)) + geom_boxplot()
p

Fonctions rapides pour changer le thème

Plusieurs fonctions sont disponibles dans le package ggplot2 pour changer rapidement le thème des graphes:

  • theme_gray : couleur de fond grise et grille blanche
  • theme_bw : couleur de fond blanche et grille grise
p + theme_gray(base_size = 14)
p + theme_bw()

  • theme_linedraw: traits noirs autour du graphique
  • theme_light: traits et axes légèrement gris (plus d’attention accordée aux données)
p + theme_linedraw()
p + theme_light()

  • theme_minimal: pas de couleur de fond
  • theme_classic : thème avec les traits des axes mais pas de grilles
p + theme_minimal()
p + theme_classic()

  • theme_void: Thème vide, util pour des graphs avec des coordonnées non-standard ou pour dessiner
  • theme_dark(): Thème avec un arrière plan noir, designé pour faire ressortir les couleurs.
p + theme_void()
p + theme_dark()
ggplot2 background color, theme_void and theme_dark, R programmingggplot2 background color, theme_void and theme_dark, R programming

ggplot2 background color, theme_void and theme_dark, R programming

Les fonctions theme_xx() peuvent prendre les deux arguments ci-dessous:

  • base_size : taille de base de la police (pour changer la taille de tous les éléments textuels sur le graphique)
  • base_family : famille de police

La taille, de tous éléments textuels du graphe, peut être changée facilement en une seule fois :

# Exemple 1
theme_set(theme_gray(base_size = 20))
ggplot(ToothGrowth, aes(x=dose, y=len)) + geom_boxplot()
# Exemple 2
ggplot(ToothGrowth, aes(x=dose, y=len)) + geom_boxplot()+
  theme_classic(base_size = 25)

Notez que, la fonction theme_set() modifie le thème pour toute la durée de la session.

Personnaliser l’arrière plan du graphique

La fonction theme() est utilisée pour contrôler les éléments graphiques incluant :

  • Les éléments linéaires : traits des axes, traits des grilles mineur et majeur, bordure du panneau graphique, graduation des axes, couleurs de fond, etc.
  • Les éléments textuels : titre du graphique et des axes, titre et textes de la légende, les étiquettes des graduations des axes, etc.
  • Les éléments rectangualaires : arrière plan du graphique, du panneau et de la légende, etc.

Il existe une fonction spécifique pour modifier chacun de ces trois éléments:

  • element_line() pour modifier les éléments linéaires du thème
  • element_text() pour modifier les éléments textuels
  • element_rect() pour changer l’apparence des éléments rectangulaires

Notez que, chacun de ces éléments de thème peut être supprimé avec la fonction element_blank()

Changer les couleurs de l’arrière plan du panneau et de la grille

  1. Les fonctions theme() et element_rect() sont utilisés pour modifier la couleur de fond du panneau :
p + theme(panel.background = element_rect(fill, colour, size, 
                                          linetype, color))

  • fill : couleur de remplissage du rectangle
  • colour, color : couleur de la bordure
  • size : taille de la bordure


  1. L’apparence des traits de la grille peut être changée en utilisant la fonction element_line() comme suit :
# Changer les traits des grilles mineures et majeures 
p + theme(
  panel.grid.major = element_line(colour, size, linetype,
                                   lineend, color),
  panel.grid.minor = element_line(colour, size, linetype,
                                   lineend, color)
  )

  • colour, color : couleur des traits
  • size : épaisseur des traits
  • linetype : Type de traits. Le type de traits peut être spécifié en utilisant soit du texte (“blank”, “solid”, “dashed”, “dotted”, “dotdash”, “longdash”, “twodash”) ou un nombre (0, 1, 2, 3, 4, 5, 6). Notez que linetype = “solid” est identique à linetype=1. Les types de traits disponibles dans R sont décrits ici: Types de traits dans R
  • lineend : terminaison du trait. Les valeurs possibles sont: “round”, “butt” ou “square”


Le code de R ci-dessous illustre comment modifier l’apparence du fond du panneau graphique et de la grille:

# Changer la couleur de fond du panneau en "lightblue"
# et la couleur des grilles en "white"
p + theme(
  panel.background = element_rect(fill = "lightblue",
                                colour = "lightblue",
                                size = 0.5, linetype = "solid"),
  panel.grid.major = element_line(size = 0.5, linetype = 'solid',
                                colour = "white"), 
  panel.grid.minor = element_line(size = 0.25, linetype = 'solid',
                                colour = "white")
  )

Supprimer les bordures du panneau et les grilles

Il est possible de masquer les bordures du panneau graphique et les lignes de la grille avec la fonction element_blank() comme suit:

# Masquer les bordures et les lignes de la grille
p + theme(panel.border = element_blank(),
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank())
# Masquer les bordures et les lignes de la grille
# Modifier le trait des axes
p + theme(panel.border = element_blank(),
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(),
          axis.line = element_line(size = 0.5, linetype = "solid",
                                   colour = "black"))
ggplot2 background color, remove plot panel border, remove grid lines, R programmingggplot2 background color, remove plot panel border, remove grid lines, R programming

ggplot2 background color, remove plot panel border, remove grid lines, R programming

Changer la couleur de fond du graphique (pas le panneau)

p + theme(plot.background = element_rect(fill = "darkblue"))

Utiliser un thème personnalisé

Vous pouvez changer entièrement l’apparence d’un graphique en utilisant des thèmes personnalisés. Jeffrey Arnold a développé le package ggthemes contenant des thèmes personnalisés.

Pour utiliser ces thèmes installer et charger le package ggthemes comme suit:

install.packages("ggthemes") # Installer 
library(ggthemes) # Charger

Le package ggthemes fournit de nombreux thèmes pour ggplot2.

theme_tufte : un thème minimalist

# Nuage de point
ggplot(mtcars, aes(wt, mpg)) +
  geom_point() + geom_rangeframe() + 
  theme_tufte()
ggplot2 theme_tufte, logiciel R

ggplot2 theme_tufte, logiciel R

theme_economist : thème basé sur des graphiques de magazines economistes

p <- ggplot(iris, aes(Sepal.Length, Sepal.Width, colour = Species))+
  geom_point()
# Utiliser l'échelle de couleurs économiste
p + theme_economist() + 
  scale_color_economist()+
  ggtitle("Iris data sets")
ggplot2 theme_economist, logiciel R

ggplot2 theme_economist, logiciel R

Notez que la fonction scale_fill_economist() est aussi disponible (pour le remplissage des box plots, bar plots, …).

theme_stata: thème basé sur des graphiqes de types Stata

p + theme_stata() + scale_color_stata() +
  ggtitle("Iris data")
ggplot2 theme_stata, logiciel R

ggplot2 theme_stata, logiciel R

Les échelles de couleurs stata peuvent être utilisées comme suit :

scale_fill_stata(scheme = "s2color", ...)
scale_color_stata(scheme = "s2color", ...)

Les valeurs possibles pour l’argument scheme sont “s2color”, “s1rcolor”, “s1color”, ou “mono”.

theme_wsj: thème basé sur des graphiques de types Wall Street Journal

p + theme_wsj()+ scale_colour_wsj("colors6")+
  ggtitle("Iris data")
ggplot2 theme_wsj, logiciel R

ggplot2 theme_wsj, logiciel R

Les échelles de couleurs de types Wall Street Journal sont :

scale_color_wsj(palette = "colors6", ...)
scale_fill_wsj(palette = "colors6", ...)

Les valeurs possibles pour l’argument palette sont: “rgby”, “red_green”, “black_green”, “dem_rep”, “colors6”.

theme_calc : thème de type LibreOffice Calc

p + theme_calc()+ scale_colour_calc()+
  ggtitle("Iris data")
ggplot2 theme_calc, logiciel R

ggplot2 theme_calc, logiciel R

theme_hc : thème de types Highcharts JS

p + theme_hc()+ scale_colour_hc()
ggplot2 theme_hc et logiciel R

ggplot2 theme_hc et logiciel R

Créé un thème personnalisé

  1. Vous pouvez changer le thème pour la session R courante en utilisant la fonction theme_set() comme suit :
theme_set(theme_gray(base_size = 20))
  1. Vous pouvez extraire et modifier le code R du thème theme_gray :
theme_gray
function (base_size = 11, base_family = "") 
{
 half_line <- base_size/2
theme(
  line = element_line(colour = "black", size = 0.5, 
                      linetype = 1, lineend = "butt"), 
  rect = element_rect(fill = "white", colour = "black",
                      size = 0.5, linetype = 1),
  text = element_text(family = base_family, face = "plain",
                      colour = "black", size = base_size,
                      lineheight = 0.9,  hjust = 0.5,
                      vjust = 0.5, angle = 0, 
                      margin = margin(), debug = FALSE), 
  
  axis.line = element_blank(), 
  axis.text = element_text(size = rel(0.8), colour = "grey30"),
  axis.text.x = element_text(margin = margin(t = 0.8*half_line/2), 
                             vjust = 1), 
  axis.text.y = element_text(margin = margin(r = 0.8*half_line/2),
                             hjust = 1),
  axis.ticks = element_line(colour = "grey20"), 
  axis.ticks.length = unit(half_line/2, "pt"), 
  axis.title.x = element_text(margin = margin(t = 0.8 * half_line,
                                          b = 0.8 * half_line/2)),
  axis.title.y = element_text(angle = 90, 
                              margin = margin(r = 0.8 * half_line,
                                          l = 0.8 * half_line/2)),
  
  legend.background = element_rect(colour = NA), 
  legend.margin = unit(0.2, "cm"), 
  legend.key = element_rect(fill = "grey95", colour = "white"),
  legend.key.size = unit(1.2, "lines"), 
  legend.key.height = NULL,
  legend.key.width = NULL, 
  legend.text = element_text(size = rel(0.8)),
  legend.text.align = NULL,
  legend.title = element_text(hjust = 0), 
  legend.title.align = NULL, 
  legend.position = "right", 
  legend.direction = NULL,
  legend.justification = "center", 
  legend.box = NULL, 
  
  panel.background = element_rect(fill = "grey92", colour = NA),
  panel.border = element_blank(), 
  panel.grid.major = element_line(colour = "white"), 
  panel.grid.minor = element_line(colour = "white", size = 0.25), 
  panel.margin = unit(half_line, "pt"), panel.margin.x = NULL, 
  panel.margin.y = NULL, panel.ontop = FALSE, 
  
  strip.background = element_rect(fill = "grey85", colour = NA),
  strip.text = element_text(colour = "grey10", size = rel(0.8)),
  strip.text.x = element_text(margin = margin(t = half_line,
                                              b = half_line)), 
  strip.text.y = element_text(angle = -90, 
                              margin = margin(l = half_line, 
                                              r = half_line)),
  strip.switch.pad.grid = unit(0.1, "cm"),
  strip.switch.pad.wrap = unit(0.1, "cm"), 
  
  plot.background = element_rect(colour = "white"), 
  plot.title = element_text(size = rel(1.2), 
                            margin = margin(b = half_line * 1.2)),
  plot.margin = margin(half_line, half_line, half_line, half_line),
  complete = TRUE)
}

Notez que la fonction rel() modifie la taille de manière relative à la taille de base.

Infos

Cette analyse a été réalisée avec le logiciel R (ver. 3.2.4) et le package ggplot2 (ver. 2.1.0)







Want to Learn More on R Programming and Data Science?

==> Subscribe to our Mailing List <==

* indicates required


 Get involved :
  Click to follow us on and Google+ :   
  Comment this article by clicking on "Discussion" button (top-right position of this page)
  Sign up as a member and post news and articles on STHDA web site.


Suggestions


ggplot2 couleurs : Changer les couleurs automatiquement et manuellement - Logiciel R et visualisation de données
ggplot2 graduation des axes : Guide pour personnaliser les étiquettes des graduations - Logiciel R et visualisation de données
ggplot2 légende : Modifier facilement la légende d'un graphique - Logiciel R et visualisation de données
ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 - Combiner plusieurs graphiques sur la même page - Logiciel R et visualisation de données
ggplot2 échelle et transformation des axes - Logiciel R et visualisation de données
ggplot2 titres : Titre principal, titre des axes et légendes - Logiciel R et visualisation de données
ggplot2 box plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 nuage de points: Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 textes : Ajouter du texte à un graphique - Logiciel R et visualisation de données
ggplot2 barres d'erreur : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 types de points - Logiciel R et visualisation de données
ggplot2 graphique en camembert: Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 histogramme : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 - ajouter une ligne droite à un graphe : Ligne horizontale, verticale et droite de régression
ggplot2
ggplot2 graphique linéaire : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 dot plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 : heatmap d'une matrice de corrélation - Logiciel R et visualisation de données
ggplot2 type de traits : Comment changer le type de trait d'un graphique avec le logiciel R?
ggplot2 facet : diviser un graphique en plusieurs panneaux - Logiciel R et visualisation de données
ggplot2 ECDF graphique: Guide de démarrage rapide pour la fonction de répartition empirique - Logiciel R et visualisation de données
ggplot2 courbe de distribution : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 violin plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 stripchart (jitter): Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 pivoter un graphique : Inverser et retourner le graphique - Logiciel R et visualisation de données
ggplot2 qq plot (quantile - quantile plot) : Guide de démarrage rapide - Logiciel R et visualisation de données

Cette page a été vue 13315 fois
Licence - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions
Licence Creative Commons