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