Trucs pour LaTeX & R

ggplot2

jeudi 18 juin 2020 par Philippe MICHEL

ggplot2 est une nouvelle grammaire pour créer des graphiques avec R . Mais sa syntaxe, très bien pensée, change complètement nos habitudes.
Et en plus des avantages techniques le rendu est très actuel, tout à fait « material design » !
Je présente ici quelques exemples de graphiques pour vous aider à créer les vôtres.

Avant de rentrer dans le vif du sujet les deux sites indispensables :

Et, pour vous simplifier la vie il existe un méga-package tidyverse qui vous charge d’un coup ggplot2, dplyr & autres packages (purr...) créés & maintenus par Hadley Wickham & son équipe.

Le principe

Pour faire un graphique plus ou moins complexe, avec ggplot2 on va superposer des calques. Pour l’exemple qui suit, un nuage de point avec sa droite de régression on va dessiner :

  • Un fond (graphique vide, juste les axes). En même temps on définit les variables.
  • le nuage de point
  • La droite de régression
  • les axes, titres etc. (J’ai volontairement mis du gras etc. pour l’exemple mais le résultat n’ai pas très esthétique)
  • la légende (il n’ y en a pas dans mon exemple)
  • Et pourquoi pas un autre graphique superposé
    Ouf ! L’avantage est que chaque calque est une instruction, réutilisable. Et la syntaxe est claire.

Nuage de points

Le graphique le plus simple dans son concept. Prenons deux variables poids & age issus du data-frame patients & traçons le nuage de point avec la droite de régression & bien sûr son intervalle de confiance. Il y a d’autre façons de procéder possibles, plus concises.

patients %>% # Le data-frame utilisé
ggplot() + 
      aes(x = age, y = poids ) +# Fond vide, on définit les variables
     geom_point() + # Un nuage de point
     geom_smooth(method=lm) + # droite de régression
     labs(title = "On vieillit, on grossit",
             x = "Âge des patients",
             y = "Poids (Kg)"
             ) + # Titres des axes
     theme_light() + # Thème simple, idéal pour publication
     theme(plot.title = element_text(size=16, face="bold"), 
                axis.title.x = element_text(size=12, face="bold"), 
                axis.title.y = element_text(size=12, face="bold"),
                axis.text.x = element_text(size=12, face="bold"),
                axis.text.y = element_blank() # Pas de titre pour l'axe des y
                legend.position = "none" # Pas de légende
               ) # Les axes, titres etc.

Essayez en supprimant des lignes pour voir & comprendre le principe des calques. Seules les trois premières sont indispensables (vous obtiendrez alors un graphique vide).


Accueil | Contact | Plan du site | | Statistiques du site | Visiteurs : 706 / 148381

Suivre la vie du site fr  Suivre la vie du site R  Suivre la vie du site ggplot2   ?    |    titre sites syndiques OPML   ?

Site réalisé avec SPIP 3.2.1 + AHUNTSIC

Creative Commons License