203 votes

ggplot : liste % au lieu de compte dans les tableaux de variables nominales

Je suis le traçage d'une variable catégorielle et au lieu d'afficher les nombres pour chaque catégorie de valeur, Je suis à la recherche d'un moyen d'obtenir ggplot pour afficher le pourcentage de valeurs dans cette catégorie. Bien sûr, il est possible de créer une autre variable avec le calcul de pourcentage et de l'intrigue, mais je dois le faire plusieurs dizaines de fois et j'espère que dans une seule commande.

Je faisais des expériences avec quelque chose comme

qplot (mydataf) + stat_bin(aes(n=nrow(mydataf), y=..count../n)) + scale_y_continuous(formatter="percent")

mais je dois l'utiliser de manière incorrecte, comme j'ai eu des erreurs.

Pour reproduire facilement l'installation, voici un exemple simplifié:

mydata <- c ("aa", "bb", null, "bb", "cc", "aa", "aa", "aa", "ee", null, "cc");
mydataf <- factor(mydata);
qplot (mydataf); #this shows the count, I'm looking to see % displayed.

Dans le cas réel, je vais probablement utiliser ggplot au lieu de qplot, mais la bonne façon de l'utiliser stat_bin encore m'échappe.

Je vous remercie.

Mise à JOUR:

J'ai aussi essayé ces quatre approches:

ggplot(mydataf, aes(y = (..count..)/sum(..count..))) + scale_y_continuous(formatter = 'percent');
ggplot(mydataf, aes(y = (..count..)/sum(..count..))) + scale_y_continuous(formatter = 'percent') + geom_bar();
ggplot(mydataf, aes(x = levels(mydataf), y = (..count..)/sum(..count..))) + scale_y_continuous(formatter = 'percent');
ggplot(mydataf, aes(x = levels(mydataf), y = (..count..)/sum(..count..))) + scale_y_continuous(formatter = 'percent') + geom_bar();

mais tous les 4 donner:

Error: ggplot2 doesn't know how to deal with data of class factor

Le même message d'erreur s'affiche pour le cas simple d'

ggplot (data=mydataf, aes(levels(mydataf))) + geom_bar()

donc c'est clairement quelque chose sur la façon ggplot interagit avec un seul vecteur. Je suis de me gratter la tête, à googler pour cette erreur donne un seul résultat.

251voto

Andrew Points 2267

Puisque cela a été répondu, on a des changements significatifs à la syntaxe ggplot. Résumant le débat dans les commentaires ci-dessus :

Voici un exemple reproductible à l’aide de `` :

Cette question est actuellement le #1 hit sur google pour « histogramme de pourcentage ggplot comte vs » alors j’espère que cela aide à distiller toutes les informations actuellement logées dans les commentaires sur la réponse acceptée.

58voto

Ramnath Points 24798

cet modification du code devrait fonctionner

Si vos données ont NAs et que vous ne voulez pas faire figurer dans l’intrigue, passez na.omit(mydataf) comme argument de ggplot.

J’espère que cela aide.

6voto

Steve Powell Points 198

Si vous souhaitez que le pourcentage d' étiquettes mais Ns réelles sur l’axe des y, essayez ceci :

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