2010-09-27 8 views
5

Ce que je voudrais faire est d'étiqueter les deux geom_bar() dans l'exemple suivant avec leurs étiquettes de données respectives. Jusqu'à présent, je ne peux obtenir un ou l'autre de se présenter:ggplot2 Etiquetage d'un graphique à barres multicouche

dput():

x <- structure(list(variable = c("a", "b", "c"), f = c(0.98, 0.66, 
0.34), m = c(0.75760989010989, 0.24890977443609, 0.175125)), .Names = c("variable", 
"f", "m"), row.names = c(NA, 3L), class = "data.frame") 

ggplot(x, aes(variable, f, label=paste(f*100,"%", sep=""))) + 
geom_bar() + 
geom_text(size=3, hjust=1.3, colour="white") + 
geom_bar(aes(variable, m, label=paste(m*100,"%",sep="")), fill="purple") + 
coord_flip() 

Multilayered Bar Graph

Voyez comment à l'intérieur du noir il y a une étiquette de données. Dans le même complot, j'aimerais faire la même chose à l'intérieur du violet.

Répondre

6

comment ce travail pour vous:

ggplot(x, aes(variable, f, label=paste(f*100,"%", sep=""))) + 
geom_bar() + 
geom_text(size=3, hjust=1.3, colour="white") + 
geom_bar(aes(variable, m, label=paste(m*100,"%",sep="")), fill="purple") + 
geom_text(aes(y=m,label=paste(round(m*100),"%",sep="")),size=3, hjust=1.3, colour="white") + 
coord_flip() 
+0

J'étais très proche! J'ai essayé cette superposition de geom_text() mais avec une légère différence d'esthétique. Merci! –

3

Vous voudrez peut-être envisager une approche différente. Si le but principal du graphique est de comparer les longueurs/positions des barres, l'inclusion de nombres dans les barres produit des barres «floues» qui rendent plus difficile pour l'œil/le cerveau de juger correctement la longueur/position de la barre. bar. Si le but principal est de comparer les nombres, alors vous avez une table mal agencée (avec un fond coloré), il est plus facile de comparer les nombres s'ils s'alignent correctement. Certaines alternatives pourraient inclure un graphique et une table séparés (tous deux bien disposés), ou mettre les nombres dans la marge (correctement alignés) plutôt que sur le dessus des barres, ou créer une table avec des barres dans les cellules marginales. Vous pouvez également considérer un graphique à points plutôt qu'un graphique à barres (ggplot2 devrait toujours le faire facilement), les barres empilées permettent une comparaison raisonnable de seulement la première catégorie (la plus à gauche) et le total, dans votre exemple il n'est pas facile de comparer le taille relative de la partie noire des barres supérieure et inférieure.

+1

Personnellement, j'ai voté pour un dotplot, mais il y a certaines choses que les patrons ne vous laisseront pas changer. –