J'ai beaucoup de données pour lesquelles j'ai besoin de créer des graphiques à barres disposés par ordre décroissant. Si je le fais en dehors d'une fonction, les solutions illustrées dans ce post fonctionnent, mais pas lorsqu'elles sont utilisées dans la fonction.Tracer un graphique à barres de fréquence descendante à l'aide d'une fonction personnalisée avec ggplot2, dplyr et forcats
Voici un cas d'utilisation.
library(forcats)
library(tidyverse)
dat <- data.frame(
x = rep(letters[1:5], times=c(3,11,8, 2, 7))
)
plot_freq <- function(data, group, n=10){
group <- enquo(group)
data %>%
count(!!group) %>%
top_n(n) %>%
mutate(group := fct_reorder(!!group, n)) %>%
ggplot(., aes_(group, quo(n))) +
geom_bar(stat = "identity") +
coord_flip()
}
plot_freq(dat, x, n=5)
Que puis-je faire d'autre avec plot_freq
qui peut me donner mon résultat désiré?
Je ne manquait seulement 'quo()' sur le '' group' dans ggplot'. Qu'est-ce qui se passait là-bas que cela a permis de réorganiser? – hpesoj626
@ hpesoj626 Dans mon R 3.4.2 'aes (groupe, n)' fonctionne dans la fonction 'plot_freq'. Je ne comprends pas pourquoi ça ne marche pas pour toi. –
hmm ... Je suis toujours en train d'enquêter. Mais c'est un problème pour un autre jour. En ce moment je peux être heureux que mon mal de tête soit fini. Et c'est seulement à cause d'un «quo()». Le passage à 'tidyeval' a raté beaucoup de mes fonctions personnalisées. Merci pour l'aide. – hpesoj626