Je trouve mon code inefficace et je souhaite le rendre plus rapide en itérant à travers les variables de facteur dans l'ensemble de données et en utilisant plot_grid () pour combiner ces graphiques ensemble. Mais je ne sais pas comment.
Voici le code répétitif que j'écris beaucoup de fois.
`3` <- customer_personal_profiles %>% ggplot(aes(Education)) + geom_bar() + coord_flip() + theme_bw() `2` <-customer_personal_profiles %>% ggplot(aes(EmploymentStatus)) + geom_bar() + coord_flip() + theme_bw() `1` <- customer_personal_profiles %>% ggplot(aes(Gender)) + geom_bar() + coord_flip() + theme_bw() cowplot::plot_grid(`1`, `2`, `3`)
Le code a produit ce graphique:
J'ai trouvé le code assez long et répétitif. Y a-t-il un moyen de le faire en plusieurs lignes de code?
Merci!
3 Réponses :
Nous pourrions obtenir toutes les variables à tracer dans une variable et les parcourir en boucle en utilisant lapply
/ map
, convertir les caractères en symbole
et évaluez-les et stockez les graphiques dans une liste. Nous pouvons maintenant utiliser cette liste pour tracer en utilisant plot_grid
. Utilisation d'un exemple reproductible de mtcars
.
vals <- c("Gender", "EmploymentStatus", "Education") group_plot <- lapply(vals, function(x) ggplot(customer_personal_profiles, aes(!!rlang::sym(x))) + geom_bar() + coord_flip() + theme_bw()) cowplot::plot_grid(plotlist = group_plot)
Donc pour votre cas , vous pouvez faire
vals <- c("carb", "gear", "cyl") library(ggplot2) group_plot <- lapply(vals, function(x) ggplot(mtcars, aes(!!rlang::sym(x))) + geom_bar() + coord_flip() + theme_bw()) cowplot::plot_grid(plotlist = group_plot)
Merci à tous. J'ai également réalisé que je pouvais utiliser rassembler
pour raccourcir le code:
customer_profiles_baked %>% select_if(is.factor) %>% gather(x, y, Education:Location.Code) %>% count(x, y) %>% ggplot(aes(x = y, y = n)) + facet_wrap(~ x, ncol = 2, nrow = 3, scales = "free") + geom_segment( aes(xend=y, yend=0 )) + geom_point( size=2, color="chocolate4", alpha = 0.6) + coord_flip() + theme_bw() + ylab("Count") + xlab("Personal Profile Variables")
Cela donne:
À quoi ressemble l'ensemble de données
customer_personal_profiles
?@Tam HN: essayez ceci stackoverflow.com/a/55524126/786542