2012-05-24 9 views
7

Tôi đang cố gắng để có quy mô miễn phí trên một hình ảnh Boxplot với faceting.ggplot2: boxplot với facet_grid và tỷ lệ miễn phí

Sử dụng ví dụ này tập dữ liệu, nếu tôi cố gắng này:

ggplot(data=mpg) + 
geom_boxplot(aes(x=cty, y=model))+ 
facet_grid(manufacturer ~ drv, scales = "free", space = "free") 

Plot incorrect boxplot http://dl.dropbox.com/u/9788680/plot1.png

Ở đây, quy mô miễn phí được thực hiện chính xác như tôi muốn, với quy mô khác nhau cho trục y phụ thuộc vào số lượng các yếu tố có sẵn cho quy tắc khía cạnh ngang. Tuy nhiên, các ô vuông không được mô tả chính xác (tức là các đường liền mạch thay vì các ô vuông). Khi tìm kiếm một giải pháp, tôi thấy rằng tôi nên sử dụng coord_flip() để thực hiện các boxplot được mô tả một cách chính xác, ví dụ:

ggplot(data=mpg) + 
geom_boxplot(aes(x=model,y=cty))+ 
facet_grid(manufacturer ~ drv, scales = "free", space = "free")+ 
coord_flip() 

Plot correct boxplot, but no scaling http://dl.dropbox.com/u/9788680/plot2.png

Trong hình trên, các boxplots hiện nay chính xác. Tuy nhiên, quy mô miễn phí cho các yếu tố (do đó trên trục y) được loại bỏ. Bây giờ, đối với mỗi dòng khía cạnh ngang, TẤT CẢ các yếu tố có sẵn trên tập dữ liệu giờ đây được bao gồm, thay vì chỉ các yếu tố có sẵn cho mỗi khía cạnh (như trong Hình 1).

Tôi muốn biết làm cách nào để có được mặt chính xác với thang đo miễn phí trên cả hai trục, mô tả chính xác ô mẫu.

Nếu ai đó có thể chỉ cho tôi đúng hướng, tôi sẽ biết ơn.

Cảm ơn.

+0

tôi nhận thấy vấn đề tương tự khi trả lời [http://stackoverflow.com/a/10729264/1385941](http://stackoverflow.com/a/10729264/1385941). Tôi đoán là vì 'coord_flip()' gọi 'coord_cartesian' không phải' scale_continuous'. 'scale_' và' coord_' ảnh hưởng đến cốt truyện khác nhau. Nó có thể là giá trị báo cáo này như là một 'vấn đề' tại [https://github.com/hadley/ggplot2](https://github.com/hadley/ggplot2) – mnel

+0

Cảm ơn bạn đã bình luận này. Hy vọng rằng ai đó có thể cung cấp một workaround. Nếu không có bình luận nào khác được đăng, tôi sẽ báo cáo vấn đề này như đã đề xuất. Có lẽ một tương tự để geom_errorbarh có thể được viết cho boxplots là tốt. – coenvh

+0

Hiện không có cách giải quyết nào; ô chỉ là dọc (biến liên tục là y) và chỉ có thể được lật với 'coord_flip()', nhưng điều đó làm rối loạn các vảy khía cạnh, như bạn thấy. Xem https://groups.google.com/d/msg/ggplot2/u5a1mpnJR7E/XxwXWNDX77MJ –

Trả lời

0

tôi nhận thấy ngày hôm qua một cách độc lập mà bxoplots ngang cho thấy như dòng - Tôi không chắc chắn nhưng nếu nó là một lỗi, hoặc một tính năng, hoặc nó nó ca được thay đổi

trong trường hợp của bạn, tôi đã làm điều này

library(ggplot2) 
ggplot(data=mpg) + 
    geom_boxplot(aes(y=cty, x=model,fill=model))+ 
    facet_grid(manufacturer~drv, scales = "free", space = "free")+theme(axis.text.x=element_text(angle=90),legend.position="none") 

chỉ đảo ngược x và y, và cũng là khía cạnh = _grid cuộc gọi, thêm một số màu sắc và xoay nhãn x - tôi nghĩ rằng đây là những gì bạn muốn chỉ lật

+0

Tôi đã thử ví dụ của bạn, nhưng trong trường hợp này đây là các ô * dọc *! Đây không phải là cốt truyện mà tôi muốn tạo ra.Tôi đã cố gắng để có được hộp ngang, không thẳng đứng. Vì vậy, về cơ bản ví dụ đầu tiên trong bài viết của tôi nhưng sau đó nhận được các ô mẫu thực tế, không phải những dòng này ... – coenvh

+0

Nó đã được giải thích rằng ggplot không làm các ô ngang, tôi đã chỉ cho bạn cách bạn có thể tạo một phiên bản rất giống như chỉ lật – user1617979

+1

Có, từ những bình luận trước đây, giới hạn ggplot rõ ràng này trở nên rõ ràng. Tuy nhiên vẫn còn, câu hỏi của tôi là về ô vuông dọc ... vì vậy đề xuất của bạn, mặc dù đánh giá cao, không thực sự giải quyết vấn đề của tôi :) – coenvh

1

các hành vi mong muốn được hỗ trợ ít nhất là của ggplot2 2.2 .1.


library(ggplot2) 
ggplot(data=mpg[which(mpg$manufacturer %in% c('audi', 'hyundai', 'jeep')),]) + 
    geom_boxplot(aes(x=model,y=cty)) + 
    facet_grid(manufacturer ~ drv, scales = "free", space = "free") + 
    coord_flip() 

sessionInfo() 
#> R version 3.3.2 (2016-10-31) 
#> Platform: x86_64-apple-darwin13.4.0 (64-bit) 
#> Running under: OS X El Capitan 10.11.6 
#> 
#> locale: 
#> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 
#> 
#> attached base packages: 
#> [1] stats  graphics grDevices utils  datasets methods base  
#> 
#> other attached packages: 
#> [1] ggplot2_2.2.1 
#> 
#> loaded via a namespace (and not attached): 
#> [1] Rcpp_0.12.11   digest_0.6.12  rprojroot_1.2  
#> [4] plyr_1.8.4   grid_3.3.2   gtable_0.2.0   
#> [7] backports_1.0.5  magrittr_1.5   evaluate_0.10.1  
#> [10] scales_0.4.1.9002 rlang_0.1.1.9000  stringi_1.1.5  
#> [13] reshape2_1.4.2  lazyeval_0.2.0  rmarkdown_1.6.0.9001 
#> [16] labeling_0.3   tools_3.3.2   stringr_1.2.0  
#> [19] munsell_0.4.3  yaml_2.1.14   colorspace_1.3-2  
#> [22] htmltools_0.3.6  knitr_1.16   tibble_1.3.3