ggplot - rstudio geom_text
Coloca geom_text en barra de barras esquivada (1)
Intenté que el título se explicara por sí mismo, pero aquí va, primero, los datos:
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 una barra de barras esquivada, hacer el coord_flip
y poner 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()
usted puede ver la salida here .
Creo 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?
ggplot(bar) +
geom_bar(aes(variable, `(all)`, fill = ustanova), position = "dodge") +
geom_text(aes(variable, `(all)`, label = sprintf("%2.1f", `(all)`)),
position = position_dodge(width = 1)) +
coord_flip()
La clave es usar position = position_dodge(width = 1)
lugar de position = "dodge"
, que es solo un atajo sin ningún parámetro.
En ggplot2_2.0.0
, encontrará varios ejemplos en ?geom_text
sobre cómo posicionar geom_text
en barras esquivadas o apiladas (el fragmento de código denominado " # Aligning labels and bars"
). Preguntas y respuestas ¿Cuál es el argumento de ancho en position_dodge? proporciona una descripción más completa del tema.