2015-02-12 13 views
5

Tôi đang sử dụng ggplot trong R để vẽ một số điều kiện với facet_wrap. Tôi muốn đặt dải có tên cốt truyện trên trục thẳng đứng bên phải thay vì ở trên cùng.R/ggplot: Văn bản dải dọc với facet_wrap

Đây là một ví dụ:

library(ggplot2) 
dat<- data.frame(name= rep(LETTERS[1:5], each= 4), value= rnorm(20), time= rep(1:5, 4)) 
gg<- ggplot(data= dat, aes(x= time, y= value)) + 
    geom_point() + 
    facet_wrap(~ name, ncol= 1) 

enter image description here Ở đây, tên lô (A, B, C, D, E) là trên đầu trang, tôi muốn họ được ở phía bên phải như trong đây :

gg + facet_grid(name ~ .) 

enter image description here

có một công tắc dễ dàng để làm điều đó? (Tôi không sử dụng facet_grid vì tôi muốn sử dụng các tùy chọn nrowncol đi kèm với facet_wrap).

Cảm ơn! Dario

sessionInfo() 
R version 3.0.1 (2013-05-16) 
Platform: x86_64-apple-darwin10.8.0 (64-bit) 

locale: 
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] ggplot2_0.9.3.1 

loaded via a namespace (and not attached): 
[1] colorspace_1.2-4 dichromat_2.0-0 digest_0.6.4  grid_3.0.1   
[5] gtable_0.1.2  labeling_0.2  MASS_7.3-29  munsell_0.4.2  
[9] plyr_1.8.1   proto_0.3-10  RColorBrewer_1.0-5 Rcpp_0.11.0  
[13] reshape2_1.2.2  scales_0.2.3  stringr_0.6.2  tools_3.0.1  
+0

Tôi không nghĩ rằng đây sẽ dễ dàng. Điều duy nhất tôi có thể tưởng tượng là tạo một biến giả và sử dụng nó với 'facet_grid'. Bạn luôn có thể thử các thao tác ở mức độ thấp bằng 'grid/gridExtra', nhưng đó là một đường dẫn phức tạp. – tonytonov

+1

Ok, cảm ơn phản hồi. Tôi đoán tuyến đường biến giả là dễ nhất, mặc dù tôi không muốn thay đổi dữ liệu chỉ vì mục đích thẩm mỹ. – dariober

Trả lời

2

Để tham khảo trong tương lai, bây giờ bạn có thể sử dụng strip.position="right"-put them on the right side, ví dụ .:

library(ggplot2) 
dat<- data.frame(name= rep(LETTERS[1:5], each= 4), value= rnorm(20), time= rep(1:5, 4)) 
gg<- ggplot(data= dat, aes(x= time, y= value)) + 
    geom_point() + 
    facet_wrap(~ name, ncol= 1, strip.position="right") 
1

Nếu bạn sẵn sàng có các nhãn khía cạnh ở phía bên tay trái của các khía cạnh sau đó là một giải pháp đơn giản mà trục y trở thành trục x và trục x trở thành y- trục.

library(ggplot2) 
library(gridExtra) 
library(gridGraphics) 

# standard plot, facet labels on top 
ggplot(diamonds) + 
    aes(x = carat, y = price) + 
    geom_point() + 
    facet_wrap(~ cut) 

enter image description here

# Use the gridExtra and gridGraphics utilities to rotate the plot. 
# This requires some modifications to the axes as well. Note the use of 
# a negative carat in the aes() call, and text modifications with theme() 
grid.newpage() 
pushViewport(viewport(angle = 90)) 
grid.draw(ggplotGrob(

    ggplot(diamonds) + 
    aes(x = price, y = -carat) + 
    geom_point() + 
    facet_wrap(~ cut) + 
    scale_y_continuous(name = "Carat", breaks = -seq(0, 5, by = 1), labels = seq(0, 5, by = 1)) + 
    theme(axis.text.y = element_text(angle = 270), 
      axis.title.y = element_text(angle = 270), 
      axis.text.x = element_text(angle = 270)) 
    )) 

enter image description here

Di chuyển facet_wrap nhãn để phía bên tay phải của đồ họa xoay sẽ được thực hiện với một góc quay của -90. Tuy nhiên, điều đó sẽ có trục x hiệu quả trên đầu các ô. Bạn cần phải làm việc trên mã để di chuyển các nhãn trục y từ trái sang phải của ô "chuẩn" và sau đó xoay như minh họa ở đây bởi -90.

+0

Đây là một cách tiếp cận thú vị và khá đơn giản, cảm ơn! Bất kỳ ý tưởng làm thế nào để đảm bảo kích thước của cốt truyện kết quả không tràn chế độ xem? – cashoes

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