2012-05-04 9 views
6

ho i seguenti dati:mappa di calore multiforme ggplot per porzione selezionata di X con ulteriori etichette di testo su di esso

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 è una variabile sfaccettatura, position è una variabile x continuo. yvar viene utilizzato per riempire il colore delle tessere. ycat è un'etichetta di testo per ogni riquadro. Voglio creare una trama con spazio vuoto per tutti i valori, ad eccezione di alcune tessere che seleziono per tracciare con un colore di riempimento e le etichette.

Ecco quello che ho finora:

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

mi piacerebbe la trama a guardare come questo, tranne avere spazio vuoto ovunque tranne che, per esempio, il gruppo 1 tra 30-50 e il gruppo 5 tra 20-60, un po 'come questo:

enter image description here

+0

È la tua domanda su come rimuovere le etichette dell'asse xey sull'ultimo grafico? vale a dire come rimuovere 0, 20, 40, ecc sull'asse x e come rimuovere ID-1, ID-2 sull'asse y? – joran

+0

La mia domanda ora è solo per ombreggiare le regioni selezionate, per esempio le posizioni nel gruppo 1 - il valore x da 30 a 50 e il gruppo 5 - il valore x da 20 a 60, il resto sarebbe mentre e ancora presente. – SHRram

+0

Quindi vuoi tracciare tutti i valori, vuoi semplicemente cambiare quali tessere sono ombreggiate? – joran

risposta

2

questo produrrà l'ultima trama, ma solo ombra regioni selezionate:

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

grazie, è interessante che tu stia selezionando il gruppo 1,5, ma quando ordino il grafico 1,2 si sta tracciando! – SHRram

+0

Anche io seleziono, 1,3 o 1,2 - sempre grafici in 1, 2 faccette – SHRram

+0

@ramshar Funziona bene per me. – joran

Problemi correlati