2012-05-04 23 views
6

tengo los siguientes datos:mapa de calor de múltiples facetas con ggplot para porción seleccionada de X con etiquetas de texto adicionales en él

Id = paste ("ID-", 1:5, sep = "") 
position <- rep(seq (1, 100,10), each = 5) 
group = rep (rep(rep (1:5, each = length (Id)), each = length(position))) 
yvar <- rnorm (length(position), 0.5, 0.1) 
ycat <- c(sample (c("A", "B"), length(yvar), replace = TRUE)) 
namevar <- rep(Id, length(group)/length(Id)) 
mydf <- data.frame (namevar, group, position, yvar, ycat) 

group es una variable de facetado, position es una variable x continua. yvar se utiliza para rellenar el color de las baldosas. ycat es una etiqueta de texto para cada mosaico. Quiero crear un gráfico con espacio vacío para todos los valores, excepto ciertos mosaicos que selecciono para trazar con un color de relleno y etiquetas.

Esto es lo que tengo hasta ahora:

ggplot(mydf,aes(y=Id,x=position)) + 
     facet_wrap(~group) +  
     geom_tile(aes(fill = yvar),colour = "black") + 
     geom_text(aes(label = ycat)) + 
     labs(x = NULL,y = NULL) 

enter image description here

me gustaría la trama para parecerse a esto, excepto tener un espacio en blanco en todas partes excepto, por ejemplo, el grupo 1 entre 30-50 y el grupo 5 entre 20-60, algo así como esto:

enter image description here

+0

¿Se le pregunta cómo eliminar las etiquetas del eje xey en el último diagrama? es decir, cómo eliminar el 0, 20, 40, etc. en el eje x y cómo eliminar el ID-1, ID-2 en el eje y? – joran

+0

Mi pregunta ahora es solo sombrear las regiones seleccionadas, por ejemplo, las posiciones en el grupo 1 - valor x de 30 a 50 y grupo 5 - valor x de 20 a 60, el resto sería, pero aún está presente. – SHRram

+0

Entonces, ¿desea trazar todos los valores, simplemente quiere cambiar qué mosaicos están sombreados? – joran

Respuesta

2

esto producirá su última trama, pero sólo la sombra regiones seleccionadas:

ggplot(mydf,aes(y=Id,x=position)) + 
    facet_wrap(~group) + 
    geom_blank() +  
    geom_tile(data = subset(mydf,(group == 1 & position >= 30 & position <= 50) | 
           (group == 5 & position >= 20 & position <= 60)),aes(fill = yvar),colour = "black") + 
    geom_text(data = subset(mydf,(group == 1 & position >= 30 & position <= 50) | 
           (group == 5 & position >= 20 & position <= 60)),aes(label = ycat),size = 3) + 
    labs(x = NULL,y = NULL) 
+0

gracias, es interesante que esté seleccionando el grupo 1,5, pero cuando trazo el 1,2 está consiguiendo el trazado. – SHRram

+0

Incluso selecciono, 1,3 o 1,2 - siempre traza en 1, 2 facetas – SHRram

+0

@ramshar Funciona bien para mí. – joran

Cuestiones relacionadas