Coloque geom_text en el diagrama de barras esquivado
Intenté que el título se explicara por sí mismo, pero aquí va: los datos primero:
dtf <- structure(list(variable = structure(c(1L, 1L, 2L, 2L, 3L, 3L,
4L, 4L, 5L, 5L), .Label = c("vma", "vla", "ia", "fma", "fla"), class = "factor"),
ustanova = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L,
2L), .Label = c("srednja škola", "fakultet"), class = "factor"),
`(all)` = c(42.9542857142857, 38.7803203661327, 37.8996138996139,
33.7672811059908, 29.591439688716, 26.1890660592255, 27.9557692307692,
23.9426605504587, 33.2200772200772, 26.9493087557604)), .Names = c("variable",
"ustanova", "(all)"), row.names = c(NA, 10L), class = c("cast_df",
"data.frame"), idvars = c("variable", "ustanova"), rdimnames = list(
structure(list(variable = structure(c(1L, 1L, 2L, 2L, 3L,
3L, 4L, 4L, 5L, 5L), .Label = c("vma", "vla", "ia", "fma",
"fla"), class = "factor"), ustanova = structure(c(1L, 2L,
1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("srednja škola",
"fakultet"), class = "factor")), .Names = c("variable", "ustanova"
), row.names = c("vma_srednja škola", "vma_fakultet", "vla_srednja škola",
"vla_fakultet", "ia_srednja škola", "ia_fakultet", "fma_srednja škola",
"fma_fakultet", "fla_srednja škola", "fla_fakultet"), class = "data.frame"),
structure(list(value = structure(1L, .Label = "(all)", class = "factor")), .Names = "value", row.names = "(all)", class = "data.frame")))
Y me gustaría crear un diagrama de barras esquivado, hacer coord_flip
y colocar algunas etiquetas de texto dentro de las barras:
ggplot(bar) + geom_bar(aes(variable, `(all)`, fill = ustanova), position = "dodge") +
geom_text(aes(variable, `(all)`, label = sprintf("%2.1f", `(all)`)), position = "dodge") +
coord_flip()
Puedes ver el resultado aquí .
Supongo que estoy pidiendo algo trivial. Quiero que las etiquetas de texto "sigan" las barras apiladas. Las etiquetas se colocan correctamente en el eje y, pero ¿cómo colocarlas correctamente en el eje x?
¿Es esto lo que quieres?
library(ggplot2)
ggplot(bar) +
geom_col(aes(variable, `(all)`, fill = ustanova), position = "dodge") +
geom_text(aes(variable, `(all)`, label = sprintf("%2.1f", `(all)`), group = ustanova),
position = position_dodge(width = .9)) +
coord_flip()
La clave es position = position_dodge(width = .9)
(donde .9
está el ancho predeterminado de las barras) en lugar de position = "dodge"
, que es solo un atajo sin ningún parámetro. Además, debe configurar la group=ustanova
estética geom_text
para evitar las etiquetas ustanova
(una segunda opción sería crear fill = ustanova
una estética global a través deggplot(bar, aes(fill = ustanova))
En ggplot2_2.0.0
encontrará varios ejemplos sobre ?geom_text
cómo posicionar geom_text
barras esquivadas o apiladas (el fragmento de código denominado " # Aligning labels and bars"
). Las preguntas y respuestas ¿ Cuál es el argumento de ancho en position_dodge? proporciona una descripción más detallada del tema.