2012-05-04 15 views
6

Mam następujące dane:wieloaspektowy mapa ciepła z ggplot dla wybranej części X z dodatkowych etykiet tekstowych na nim

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 jest zmienna faceting, position jest ciągła zmienna x. yvar służy do wypełniania koloru płytek. ycat to etykieta tekstowa dla każdego kafelka. Chcę utworzyć wykres z pustą przestrzenią dla wszystkich wartości, z wyjątkiem niektórych kafelków, które wybiorę do wydruku z kolorem wypełnienia i etykietami.

Oto co mam do tej pory:

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

Chciałbym wykres wyglądać tak chyba mieć spację wszędzie z wyjątkiem, na przykład, grupa 1 30-50 i grupa 5 między 20-60, coś takiego:

enter image description here

+0

Czy masz pytanie, jak usunąć etykiety osi X i Y na ostatnim wykresie? tj. jak usunąć 0, 20, 40 itd. na osi X i jak usunąć ID-1, ID-2 na osi Y? – joran

+0

Moje pytanie brzmi teraz tylko po to, by ocieniać wybrane regiony, na przykład pozycje w grupie 1 - wartość x od 30 do 50 i grupa 5 - wartość x od 20 do 60, reszta będzie wtedy, ale wciąż będzie obecna. – SHRram

+0

Więc chcesz wykreślić wszystkie wartości, po prostu chcesz zmienić, które płytki są zacienione? – joran

Odpowiedz

2

to będzie produkować ostatnią działkę, ale tylko cień wybrane regiony:

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

dzięki, że interesujące jest, że wybierasz grupę 1,5, ale kiedy wykreślę 1,2, zacznie się kreślenie! – SHRram

+0

Nawet ja wybieram, 1,3 lub 1,2 - zawsze działam w 1, 2 fasetkach – SHRram

+0

@ramshar To działa dobrze dla mnie. – joran

Powiązane problemy