2012-09-24 37 views
8

Tôi đang cố gắng sử dụng facet_grid hoặc facet_wrap kết hợp với geom_raster. Tuy nhiên, trong mỗi bảng điều khiển, thẩm mỹ z có quy mô khác nhau. Ví dụ,Nhiều truyền thuyết cho cùng một thẩm mỹ

##Data at end of question 
ggplot(dd, aes(x,y)) + 
    geom_raster(aes(fill=z)) + 
    facet_grid(type ~ var) 

cho

enter image description here.

Tuy nhiên, vì giá trị trung bình của C và D tương ứng là 0 và 100, chúng tôi mất rất nhiều độ phân giải. Bạn cũng có thể thử:

##Change C to D to get other panel 
ggplot(subset(dd, var=="C"), aes(x,y))+ 
    geom_raster(aes(fill=z)) + 
    facet_grid(type ~ var) + 
    theme(legend.position="bottom") 

mang đến cho

enter image description here

enter image description here

nhưng bây giờ tôi có hai dải y.

Câu hỏi

  1. Tôi có thể làm thay đổi cốt truyện đầu tiên để cung cấp cho hai huyền thoại cho fill thẩm mỹ?
  2. Hoặc, nếu tôi làm hai biểu đồ riêng biệt, tôi có thể xóa dải y trên một trong các ô để cho phép tôi nhấn chúng cùng nhau - gây rối với chủ đề, cho thấy điều này là không thể.

liệu

dữ liệu để tái tạo đồ thị

dd = expand.grid(x=1:10, y=1:10) 
dd = data.frame(dd, type=rep(LETTERS[1:2], each=100), 
      var =rep(c("C", "D"), each=200)) 
dd$z = rnorm(400, rep(c(0, 100), each=200)) 

Trả lời

7

gì về điều này:

enter image description here

library(gridExtra) 
p1 <- ggplot(subset(dd, var=="C"), aes(x,y))+ 
    geom_raster(aes(fill=z)) + facet_grid(type ~ var) + 
    theme(legend.position="bottom", plot.margin = unit(c(1,-1,1,0.2), "line")) 
p2 <- ggplot(subset(dd, var=="D"), aes(x,y))+ 
    geom_raster(aes(fill=z)) + facet_grid(type ~ var) + 
    theme(legend.position="bottom", plot.margin = unit(c(1,1,1,-0.8), "line"), 
     axis.text.y = element_blank(), axis.ticks.y = element_blank()) + ylab("") 
grid.arrange(arrangeGrob(p1, p2, nrow = 1)) 

cũng bạn có thể muốn chơi xung quanh với plot.margin. Và có vẻ như một câu trả lời tiêu cực cho câu hỏi đầu tiên của bạn có thể được tìm thấy here.

+0

Cảm ơn. Sẽ chơi với 'plot.margin' cho phép tôi để có được cả hai lô cùng kích thước? Bây giờ khu vực âm mưu bên trái nhỏ hơn khu vực bên phải. – csgillespie

+0

@csgillespie, có vẻ như vậy, tôi đã chỉnh sửa câu trả lời, có vẻ tốt hơn bây giờ. – Julius

+0

Cảm ơn. Đó là khá nhiều cùng một giải pháp tôi đã đưa ra, ** nhưng ** Tôi không nghĩ đến việc chuyển nhãn bảng điều khiển ra khỏi mặt của màn hình - gọn gàng. Các giải pháp là một chút hacky, nhưng tôi nghi ngờ đó là giải pháp tốt nhất. BTW, sử dụng '+ ylab (NULL)' không hiển thị bất kỳ nhãn trục y nào, điều này có thể làm cho việc này dễ dàng hơn một chút. Cảm ơn. – csgillespie

Các vấn đề liên quan