varias superponer lineas graficos grafico graficas ggplot dispersion barras r ggplot2

lineas - superponer graficas en r ggplot



¿Cómo agregar etiquetas de porcentaje o conteo sobre el gráfico de barras de porcentaje? (3)

Usando ggplot2 1.0.0 , seguí las instrucciones en la publicación a continuación para descubrir cómo trazar gráficas de barras de porcentaje a través de factores:

Suma de porcentajes para cada faceta: respete el "relleno"

test <- data.frame( test1 = sample(letters[1:2], 100, replace = TRUE), test2 = sample(letters[3:8], 100, replace = TRUE) ) library(ggplot2) library(scales) ggplot(test, aes(x= test2, group = test1)) + geom_bar(aes(y = ..density.., fill = factor(..x..))) + facet_grid(~test1) + scale_y_continuous(labels=percent)

Sin embargo, parece que no puedo obtener una etiqueta para el recuento total o el porcentaje sobre cada una de las gráficas de barras cuando uso geom_text .

¿Cuál es la adición correcta al código anterior que también conserva el porcentaje del eje y?


Esto es más fácil de hacer si resume previamente sus datos. Por ejemplo:

library(ggplot2) library(scales) library(dplyr) set.seed(25) test <- data.frame( test1 = sample(letters[1:2], 100, replace = TRUE), test2 = sample(letters[3:8], 100, replace = TRUE) ) # Summarize to get counts and percentages test.pct = test %>% group_by(test1, test2) %>% summarise(count=n()) %>% mutate(pct=count/sum(count)) ggplot(test.pct, aes(x=test2, y=pct, colour=test2, fill=test2)) + geom_bar(stat="identity") + facet_grid(. ~ test1) + scale_y_continuous(labels=percent, limits=c(0,0.27)) + geom_text(data=test.pct, aes(label=paste0(round(pct*100,1),"%"), y=pct+0.012), size=4)

(Para su información, también puede poner las etiquetas dentro de la barra, por ejemplo, cambiando la última línea de código a esto: y=pct*0.5), size=4, colour="white") )


He usado todo tu código y se me ocurrió esto. Primero asigne su ggplot a una variable, es decir, p <- ggplot (...) + geom_bar (...) etc. Luego puede hacer esto. No necesita resumir mucho, ya que ggplot tiene una función de compilación que ya le brinda todo esto. Te lo dejo para el formateo y tal. Buena suerte.

dat <- ggplot_build(p)$data %>% ldply() %>% select(group,density) %>% do(data.frame(xval = rep(1:6, times = 2),test1 = mapvalues(.$group, from = c(1,2), to = c("a","b")), density = .$density)) p + geom_text(data=dat, aes(x = xval, y = (density + .02), label = percent(density)), colour="black", size = 3)


Manteniéndose dentro de ggplot, puede intentar

ggplot(test, aes(x= test2, group=test1)) + geom_bar(aes(y = ..density.., fill = factor(..x..))) + geom_text(aes( label = format(100*..density.., digits=2, drop0trailing=TRUE), y= ..density.. ), stat= "bin", vjust = -.5) + facet_grid(~test1) + scale_y_continuous(labels=percent)

Para conteos, cambie ... densidad ... a ... conteo ... en geom_bar y geom_text

ACTUALIZACIÓN para ggplot 2.x

ggplot2 2.0 realizó muchos cambios en ggplot incluido uno que rompió la versión original de este código cuando cambió la función stat predeterminada utilizada por geom_bar ggplot 2.0.0 . En lugar de llamar a stat_bin , como antes, para stat_bin los datos, ahora llama a stat_count para contar las observaciones en cada ubicación. stat_count devuelve prop como la proporción de los recuentos en esa ubicación en lugar de la density .

El siguiente código ha sido modificado para funcionar con esta nueva versión de ggplot2 . He incluido dos versiones, las cuales muestran la altura de las barras como un porcentaje de conteos. El primero muestra la proporción del recuento sobre la barra como un porcentaje, mientras que el segundo muestra el recuento sobre la barra. También agregué etiquetas para el eje y la leyenda.

library(ggplot2) library(scales) # # Displays bar heights as percents with percentages above bars # ggplot(test, aes(x= test2, group=test1)) + geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") + geom_text(aes( label = scales::percent(..prop..), y= ..prop.. ), stat= "count", vjust = -.5) + labs(y = "Percent", fill="test2") + facet_grid(~test1) + scale_y_continuous(labels=percent) # # Displays bar heights as percents with counts above bars # ggplot(test, aes(x= test2, group=test1)) + geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") + geom_text(aes(label = ..count.., y= ..prop..), stat= "count", vjust = -.5) + labs(y = "Percent", fill="test2") + facet_grid(~test1) + scale_y_continuous(labels=percent)

La trama de la primera versión se muestra a continuación.