2012-05-04 10 views
6

tôi có các dữ liệu sau:bản đồ nhiệt nhiều mặt với ggplot cho phần được chọn của X với nhãn văn bản bổ sung vào nó

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 là một biến faceting, position là một biến x liên tục. yvar được sử dụng để điền màu của các ô. ycat là nhãn văn bản cho mỗi ô. Tôi muốn tạo một ô có không gian trống cho tất cả các giá trị, ngoại trừ một số ô mà tôi chọn để vẽ bằng màu tô và nhãn.

Dưới đây là những gì tôi có cho đến nay:

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

Tôi muốn âm mưu trông như thế này ngoại trừ có không gian trống ở khắp mọi nơi ngoại trừ, ví dụ, nhóm 1 giữa 30-50 và nhóm 5 giữa 20-60, đại loại như thế này:

enter image description here

+0

Câu hỏi của bạn là xóa nhãn x và trục y trên ô cuối cùng? tức là cách xóa 0, 20, 40, v.v. trên trục x và cách xóa ID-1, ID-2 trên trục y? – joran

+0

Câu hỏi của tôi bây giờ chỉ là che khu vực được lựa chọn, ví dụ vị trí trong nhóm 1 - x giá trị từ 30 đến 50 và nhóm 5 - x giá trị từ 20 đến 60, phần còn lại sẽ là trong khi nhưng vẫn còn hiện diện. – SHRram

+0

Vì vậy, bạn muốn vẽ tất cả các giá trị, bạn chỉ muốn thay đổi các ô được tô bóng? – joran

Trả lời

2

này sẽ tạo ra âm mưu cuối cùng của bạn, nhưng chỉ có bóng râm các vùng được chọn:

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

cảm ơn, điều thú vị là bạn đang chọn nhóm 1,5, nhưng khi tôi vẽ đồ thị 1,2 thì nhận được âm mưu! – SHRram

+0

Thậm chí tôi chọn, 1,3 hoặc 1,2 - luôn luôn âm mưu trong 1, 2 khía cạnh – SHRram

+0

@ramshar Nó hoạt động tốt cho tôi. – joran