Saltar al contenido

Cómo poner etiquetas sobre geom_bar en R con ggplot2

Te damos el resultado a este contratiempo, al menos eso pensamos. Si tienes dudas dínoslo, que para nosotros será un placer ayudarte

Solución:

Para trazar texto en un ggplot tu usas el geom_text. Pero encuentro útil resumir los datos primero usando ddply

dfl <- ddply(df, .(x), summarize, y=length(x))
str(dfl)

Dado que los datos están resumidos previamente, debe recordar cambiar agregar el stat="identity" parámetro a geom_bar:

ggplot(dfl, aes(x, y=y, fill=x)) + geom_bar(stat="identity") +
    geom_text(aes(label=y), vjust=0) +
    opts(axis.text.x=theme_blank(),
        axis.ticks=theme_blank(),
        axis.title.x=theme_blank(),
        legend.title=theme_blank(),
        axis.title.y=theme_blank()
)

ingrese la descripción de la imagen aquí

Al igual que con muchas tareas en ggplot, la estrategia general es poner lo que le gustaría agregar a la gráfica en un marco de datos de tal manera que las variables coincidan con las variables y la estética de su gráfica. Entonces, por ejemplo, crearía un nuevo marco de datos como este:

dfTab <- as.data.frame(table(df))
colnames(dfTab)[1] <- "x"
dfTab$lab <- as.character(100 * dfTab$Freq / sum(dfTab$Freq))

De manera que la x variable coincide con la variable correspondiente en df, y así. Entonces simplemente lo incluyes usando geom_text:

ggplot(df) + geom_bar(aes(x,fill=x)) + 
    geom_text(data=dfTab,aes(x=x,y=Freq,label=lab),vjust=0) +
    opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(),
        axis.title.x=theme_blank(),legend.title=theme_blank(),
        axis.title.y=theme_blank())

Este ejemplo trazará solo los porcentajes, pero puede paste juntos los recuentos también a través de algo como esto:

dfTab$lab <- paste(dfTab$Freq,paste("(",dfTab$lab,"%)",sep=""),sep=" ")

Tenga en cuenta que en la versión actual de ggplot2, opts está en desuso, por lo que usaríamos theme y element_blank ahora.

Otra solución es usar stat_count() cuando se trata de variables discretas (y stat_bin() con continuos).

ggplot(data = df, aes(x = x)) +
geom_bar(stat = "count") + 
stat_count(geom = "text", colour = "white", size = 3.5,
aes(label = ..count..),position=position_stack(vjust=0.5))

ingrese la descripción de la imagen aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *