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 que me guíe cómo obtener el texto anotado en una sola faceta.
r
ggplot2
facet
facet-wrap
facet-grid
MYaseen208
fuente
fuente
Respuestas:
Por lo general, harías algo como esto:
Debería funcionar sin especificar completamente la variable del factor, pero probablemente arrojará algunas advertencias:
fuente
geom_text
con solo una fila.annotate()
...?Aquí está la trama sin anotaciones de texto:
Creemos un marco de datos adicional para contener las anotaciones de texto:
Alternativamente, podemos especificar manualmente la posición de cada etiqueta:
También podemos etiquetar parcelas en dos facetas:
Notas:
-Inf
yInf
para colocar texto en los bordes de un panel.hjust
yvjust
para ajustar la justificación del texto.dat_text
debe tener una columna que funcione con sufacet_grid()
ofacet_wrap()
.fuente
colnames()
textodata.frame
coincida con los datos que está a punto de trazar.Si alguien está buscando una manera fácil de etiquetar facetas para informes o publicaciones, el paquete
egg
( CRAN ) tiene funcionestag_facet()
ytag_facet_outside()
funciones bastante ingeniosas .Etiqueta dentro
Defecto
Nota: si desea conservar el texto y el fondo de la tira, intente agregar
strip.text
ystrip.background
volver atheme
ingresar o eliminartheme(strip.text = element_blank(), strip.background = element_blank())
de latag_facet()
función original .Alinear arriba a la derecha y usar números romanos
Alinee la esquina inferior izquierda y use letras mayúsculas
Define tus propias etiquetas
Etiqueta afuera
Editar : agregar otra alternativa usando el paquete stickylabeller
Creado por el paquete reprex (v0.2.1)
fuente
tag_facet
por nixingstrip.text = element_blank()
Warning: Ignoring unknown parameters: strip.text
Creo que la respuesta anterior lab = "Text" es inútil, el siguiente código también está bien.
Sin embargo, si desea etiquetar de manera diferente en diferentes sub-gráficos, estará bien de esta manera:
fuente
Ampliando ligeramente la excelente respuesta de joran, para aclarar cómo funciona el marco de datos de la etiqueta.
Puede pensar en "mpg" y "wt" como las coordenadas x e y, respectivamente (me resulta más fácil hacer un seguimiento de los nombres de variables originales que renombrarlos, como en la excelente respuesta de Kamil). Necesita una fila por etiqueta y la columna "cyl" muestra con qué faceta está asociada cada fila.
fuente
No sabía sobre el
egg
paquete, así que aquí hay unaggplot2
solución de paquete simplefuente