2012-05-14 26 views
5

Tôi thích facet_grid khá một chút và thường thấy mình sử dụng nó với geom_histogram. Tôi cũng thích đối số margins=foo mà bạn có thể thấy trên tất cả các bản phân phối so với các nhóm tổng hợp. Vấn đề là khi bạn bao gồm một đối số lề nó kéo dài ra tất cả các nhóm để đáp ứng phạm vi y rộng thường rộng hơn nhiều cho các lề như bạn bây giờ có tất cả các dữ liệu. Điều này có nghĩa là tất cả các nhóm tổng hợp y quy mô rộng hơn nhiều và khó phát hiện sự khác biệt giữa các nhóm. Vì vậy, tôi tự nhủ: tự mình có thể sửa lỗi này với đối số thang đo và cho phép y thay đổi ". Vấn đề với giải pháp này là bây giờ thật khó để so sánh các nhóm tổng hợp bởi vì tất cả chúng đều có các thang đo khác nhau. để có lợi nhuận được miễn phí nhưng mọi thứ khác bị ràng buộc như thể mặc dù quy mô không phải là miễn phí, điều này có thể?ggplot2 miễn phí các lề ràng buộc phần còn lại

Tôi trình bày ở đây và các bức ảnh để chứng minh điều tôi muốn nói.

#create some data 
set.seed(10) 
dat <- data.frame(var1=rpois(1000, 20), 
    var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)), 
    var3=as.factor(sample(month.abb[1:5], 1000, replace=T))) 

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3) 
Đây là cốt truyện từ đó. Tôi thích nó ở chỗ tôi có thể dễ dàng so sánh tất cả các điểm tổng hợp kể từ khi vảy y của chúng giống nhau.Nhưng sẽ không tốt nếu có lề hoặc tổng hợp histogra ms cũng để so sánh.

enter image description here

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3, margins='var2') 

Được rồi vì vậy chúng tôi đưa margins luận trong và bây giờ chúng ta có thể so sánh, nhưng tất cả các biểu đồ nhóm tổng hợp được kéo dài đến 20 và nó làm cho việc so sánh chúng khó khăn (xem hình dưới đây). Ok, hãy đặt scales miễn phí sau đó.ví dụ này không phải là khủng khiếp như các dữ liệu được phân phối khá đồng đều int ông lấy mẫu phương pháp tôi đã sử dụng nhưng trong thực tế đời sống một số tế bào chỉ có một vài tội và những người khác có rất nhiều và so sánh thậm chí còn tồi tệ hơn

enter image description here

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3, margins='var2', scales="free_y") 

Vì vậy, đây là cốt truyện có cân miễn phí. Vấn đề là họ thực sự miễn phí cho điểm số tổng hợp là tốt và so sánh chúng là có vấn đề (một là 14, 8, một 7ish).

enter image description here

Vậy là có một cách để cho phép chỉ là margins được tự do? Về cơ bản những gì tôi muốn là lấy hình đầu tiên được tạo ra và ghép các lề trên từ hình thứ hai.

+0

Tôi đoán là không, mặc dù có [yêu cầu tính năng] có liên quan (https://github.com/hadley/ggplot2/issues/187) và điều này có vẻ dễ dàng và hợp lý hơn để triển khai cho tôi. – joran

+0

@joran Tôi có nên đưa ra yêu cầu tính năng dựa trên điều này không? Nếu vậy thì làm thế nào một người đi về làm như vậy? –

Trả lời

1

Giải pháp này có hoạt động trong thời gian chờ đợi không? Bạn có các tiêu đề lặp đi lặp lại, nhưng quy mô và nhãn x có thể bị loại bỏ.

require(ggplot2) 
require(gridExtra) 
set.seed(10) 
dat <- data.frame(var1=rpois(1000, 20), 
        var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)), 
        var3=as.factor(sample(month.abb[1:5], 1000, replace=T))) 
dat$var4 <- "All" 

windows(width=8, height=8) 

p1 <- ggplot(dat, aes(var1)) + 
    geom_histogram() + 
    facet_grid(var2~var3) + 


p2 <- ggplot(dat, aes(var1)) + 
    geom_histogram() + 
    facet_grid(~var3) 


grid.arrange(p1, p2, nrow=2, heights=c(4,1.5)) 

enter image description here

Bạn có thể đã biết làm thế nào để thả x quy mô và nhãn từ cốt truyện đầu tiên với scale_x_continuous('', breaks = NA).

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