superponer - Anotación de texto en faceta individual en ggplot2
superponer graficas en r ggplot (3)
Aquí está la trama sin anotaciones de texto:
library(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt)) +
geom_point() +
facet_grid(. ~ cyl) +
theme(panel.spacing = unit(1, "lines"))
p
Vamos a crear un marco de datos adicional para contener las anotaciones de texto:
dat_text <- data.frame(
label = c("4 cylinders", "6 cylinders", "8 cylinders"),
cyl = c(4, 6, 8)
)
p + geom_text(
data = dat_text,
mapping = aes(x = -Inf, y = -Inf, label = label),
hjust = -0.1,
vjust = -1
)
Alternativamente, podemos especificar manualmente la posición de cada etiqueta:
dat_text <- data.frame(
label = c("4 cylinders", "6 cylinders", "8 cylinders"),
cyl = c(4, 6, 8),
x = c(20, 27.5, 25),
y = c(4, 4, 4.5)
)
p + geom_text(data = ann_text,label = "Text")
p + geom_text(
data = dat_text,
mapping = aes(x = x, y = y, label = label)
)
Notas:
- Puede usar
-Inf
eInf
para colocar texto en los bordes de un panel. - Puede usar
hjust
yvjust
para ajustar la justificación del texto. - El marco de datos de etiqueta de texto
dat_text
debe tener una columna que funcione confacet_grid()
ofacet_wrap()
.
Quiero anotar algún texto en la última faceta de la trama con el siguiente código:
library(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p <- p + facet_grid(. ~ cyl)
p <- p + annotate("text", label = "Test", size = 4, x = 15, y = 5)
print(p)
Pero este código anota el texto en cada faceta. Le agradecería mucho si me guía cómo obtener el texto anotado en una sola faceta. Gracias por adelantado.
Creo que para la respuesta anterior lab = "Texto" es inútil, el siguiente código también está bien.
ann_text <- data.frame(mpg = 15,wt = 5,
cyl = factor(8,levels = c("4","6","8")))
p + geom_text(data = ann_text,label = "Text" )
Sin embargo, si desea etiquetar de manera diferente en diferentes sub-gráficos, estará bien de esta manera:
ann_text <- data.frame(mpg = c(14,15),wt = c(4,5),lab=c("text1","text2"),
cyl = factor(c(6,8),levels = c("4","6","8")))
p + geom_text(data = ann_text,aes(label =lab) )
Por lo general, harías algo como esto:
ann_text <- data.frame(mpg = 15,wt = 5,lab = "Text",
cyl = factor(8,levels = c("4","6","8")))
p + geom_text(data = ann_text,label = "Text")
Debería funcionar sin especificar completamente la variable de factor, pero probablemente lanzará algunas advertencias: