2012-05-04 22 views
6

aşağıdaki verileri:çok yönlü ısı haritası

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) 

groupposition sürekli bir X değişkeni, bir yontma değişkendir. Karoların rengini doldurmak için yvar kullanılır. ycat, her bir döşeme için bir metin etiketidir. Bir dolgu rengi ve etiketi ile çizim yapmak için seçtiğim bazı döşemeler dışında, tüm değerler için boş alan içeren bir çizim oluşturmak istiyorum.

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

Ben 30-50 arasında grup 1, örneğin, dışında her yerde boş alana sahip dışında bu gibi görünmek için arsa istiyorum: Burada

Ben bugüne kadar ne olduğunu ve 5 20-60 arasında, sıralama bu gibi grup:

enter image description here

+0

Son çizimde x ve y ekseni etiketlerinin nasıl kaldırılacağı sorulur mu? yani x eksenindeki 0, 20, 40 vb. nasıl kaldırılır ve ID-1, ID-2 y ekseninde nasıl kaldırılır? – joran

+0

Şimdiki sorum sadece seçili bölgeleri gölgelemek, örneğin 30 - 50 arası grup 1 - x değerleri ve 20 - 60 arası 5 - x değeri arasındaki pozisyonlar, dinlenme ancak yine de mevcut olacaktır. – SHRram

+0

Yani tüm değerleri çizmek istediğinizde, hangi karoların gölgelendiğini değiştirmek istersiniz? – joran

cevap

2

Bu son arsa, ama sadece gölge üretecek seçili bölgeler:

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

kurtulmak için teşekkürler, ben grup 1,5 seçiyorsunuz ilginç, ama ben çiziyorum ne zaman çizim 1,2 oluyor! – SHRram

+0

Ben bile, 1,3 veya 1,2 seçin - her zaman 1, 2 yönü – SHRram

+0

@ramshar içinde parseller Benim için iyi çalışıyor. – joran

İlgili konular