2010-09-27 15 views
5

Lo que me gustaría hacer es etiquetar ambos geom_bar() en el siguiente ejemplo con sus respectivas etiquetas de datos. Hasta el momento, sólo puedo conseguir uno o el otro para presentarse:ggplot2 Etiquetado de un gráfico de barras de varios niveles

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

Vea cómo en el interior del negro hay una etiqueta de datos. En la misma trama, me gustaría hacer lo mismo en el interior de la púrpura.

Respuesta

6

cómo funciona esto para usted:

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

¡Estaba muy cerca! Intenté esta estratificación de geom_text() pero con una estética ligeramente diferente. ¡Gracias! –

3

Es posible que desee considerar un enfoque diferente.

Si el objetivo principal del gráfico es comparar las longitudes/posiciones de las barras, incluir números en las barras produce barras "difusas" que dificultan al ojo/cerebro juzgar adecuadamente la longitud/posición del bar.

Si el objetivo principal es comparar los números, entonces lo que tiene es una mesa mal distribuida (con fondo de colores), es más fácil comparar los números si se alinean correctamente.

Algunas alternativas incluyen tener un gráfico y una tabla separados (ambos correctamente distribuidos), o poner los números en el margen (alineados correctamente) en lugar de en las barras, o crear una tabla con barras en celdas marginales. También puede considerar un gráfico de puntos en lugar de un gráfico de barras (ggplot2 aún debería hacerlo fácilmente), las barras apiladas permiten una comparación razonable de solo la primera categoría (el extremo izquierdo) y el total, en su ejemplo no es fácil comparar el tamaño relativo de la parte negra de las barras superior e inferior.

+1

Personalmente, mi voto fue para una gráfica de puntos, pero hay algunas cosas que los jefes simplemente no le permitirán cambiar. –

Cuestiones relacionadas