2 votes

Comment tracer plusieurs variables catégorielles dans R

Mon jeu de données contient plusieurs variables catégorielles que je voudrais visualiser pour voir la distribution.

Par exemple, si je voulais visualiser les 4 variables (fabricant, trans, fl, classe) dans l'ensemble de données mpg dans ggplot2, je devrais écrire 4 lignes de code :

ggplot(mpg, aes(fabricant)) + geom_bar() + coord_flip()
ggplot(mpg, aes(trans)) + geom_bar() + coord_flip()
ggplot(mpg, aes(fl)) + geom_bar() + coord_flip()
ggplot(mpg, aes(classe)) + geom_bar() + coord_flip()

Graphique en barres résultant :

description de l'image

Comment puis-je écrire un code pour faire cela de manière plus efficace ? boucle ? fonction apply ? J'aimerais voir chaque graphique un par un, si possible.

3voto

setempler Points 1070

Votre idée d'utiliser lapply est une solution.

Cela nécessite d'utiliser aes_string au lieu de aes.

Graphiques individuels

Cela crée des graphiques individuels par colonne (nom) que vous fournissez en premier argument à lapply:

lapply(c("manufacturer", "trans", "fl", "class"),
  function(col) {
    ggplot(mpg, aes_string(col)) + geom_bar() + coord_flip()
  })

Graphiques combinés

Si vous avez besoin de tous les graphiques dans une seule zone de tracé, vous pouvez utiliser miscset::ggplotGrid:

library(miscset) # installez à partir de CRAN si nécessaire
ggplotGrid(ncol = 2,
  lapply(c("manufacturer", "trans", "fl", "class"),
    function(col) {
        ggplot(mpg, aes_string(col)) + geom_bar() + coord_flip()
    }))

Le résultat ressemble à ceci:

description de l'image

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X