2010-03-10 12 views
11

JD Long me ayudó con esto: question about manual annotation.Manual anotar un ggplot con diferentes etiquetas, en diferentes facetas

Pero, ¿es posible hacer algo similar en una trama facetada, de modo que el estilo de la etiqueta corresponda al estilo de línea (aestetics) y de forma que pueda anotar diferentes facetas individualmente?

Algunos datos:

funny <- structure(list(Institution = structure(c(1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("Q-branch", 
"Some-Ville", "Spectre"), class = "factor"), Type = structure(c(5L, 
6L, 1L, 3L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 
6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 
6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L), .Label = c("Korte videregående uddannelser", 
"Mammas beer", "Mellemlange videregående uddannelser", "Tastes good", 
"Unknown", "Your"), class = "factor"), År = c(2008L, 2008L, 
2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 
2008L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2006L, 2006L, 
2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 
2006L), Mndr = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 15L, 15L, 
15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 27L, 27L, 27L, 
27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L), Data = c(159L, 
NA, NA, 23L, 204L, NA, NA, 12L, 256L, NA, NA, 24L, 166L, 6L, 
NA, 43L, 228L, NA, NA, 20L, 196L, 11L, NA, 37L, 99L, 14L, 9L, 
96L, 147L, 7L, 5L, 91L, 100L, 10L, 7L, 126L, 60L, 17L, 6L, 106L, 
78L, 18L, 13L, 140L, 48L, 23L, 5L, 136L)), .Names = c("Institution", 
"Type", "År", "Mndr", "Data"), class = "data.frame", row.names = c(NA, 
-48L)) 

Y una parcela de facetas:

ggplot(funny, aes(Mndr, y=Data, group=Type, col=Type)) + 
    geom_line() + 
    facet_grid(.~Institution) 

Gracias de antemano por su ayuda!

+0

@Shane: No creo que sea un duplicado: Andreas no quiere usar los datos de la gráfica para calcular el valor, sino que formatea sus etiquetas para que coincidan con el estilo de las líneas. – Aniko

+0

@Shane Gracias por la atención. La respuesta de Aniko es exactamente lo que estaba esperando. ¿Entonces supongo que no hay necesidad de aclarar más? A menos que sea para la posteridad de la causa. Gracias de nuevo. – Andreas

+0

Pregunta relacionada: http://stackoverflow.com/questions/2050610/creating-a-facet-wrap-plot-with-ggplot2-with-different-annotations-in-each-plot – Shane

Respuesta

15

La idea es que para cada anotación manual tenga que definir no solo la etiqueta, sino todas las variables que definen el panel, el color, etc. El siguiente código agrega dos etiquetas en paneles diferentes.

pl <- ggplot(funny, aes(Mndr, y=Data, group=Type, col=Type))+geom_line() 
     +facet_grid(.~Institution) #your plot 
nd <- data.frame(Institution=c("Q-branch","Some-Ville"), #panel 
       Type=c("Unknown", "Tastes good"),  #color 
       Mndr=c(7,12),       #x-coordinate of label 
       Data= c(170,50),       #y-coordinate of label 
       Text=c("Label 1", "Label 2"))   #label text 
# add labels to plot: 
pl <- pl + geom_text(aes(label=Text), data=nd, hjust=0, legend=FALSE) 
pl 

La opción legend=FALSE asegurará que el de una pequeña que indica el texto no se añaden a la leyenda. No es necesario que tenga un marco de datos para las etiquetas, puede tener un geom_text por separado, pero me parece más sencillo.

+0

Por lo que puedo decir de la manual, la nueva sintaxis de ggplot ha cambiado un poco, legend = FALSE ahora es show_guide = FALSE, creo. – PatrickT

+0

Estoy tratando de reproducir las tramas del código en la pregunta, así como el código en la respuesta, pero ambas tramas son idénticas. No se escribe ningún texto sobre las tramas en este último caso. ¿Ha cambiado algo en mi versión de ggplot2 (2.1.0)? – Robert

Cuestiones relacionadas