2012-09-15 27 views
6

Tôi có một loạt các số ggplot mà tôi muốn được sắp xếp như hình bên dưới và được chèn vào tài liệu được phân tích cú pháp qua knitr. Thay vì có một bức chân dung thực sự nhỏ, tôi muốn có điều này quay để cảnh quan để nó có thể điền vào trang càng nhiều càng tốt. Bất kỳ ý tưởng?Làm cách nào để xoay ggplot thành phong cảnh?

library(ggplot2) 
library(grid) 
df <- data.frame(x = 1:100, y =rnorm(100)) 
plota <- ggplot(df, aes(x, y)) + geom_point(size = 4) 


pushViewport(viewport(layout = grid.layout(3, 5))) 
vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y) 
     print(plota, vp = vplayout(1:2, 1:2)) 
     print(plota, vp = vplayout(1, 3)) 
     print(plota, vp = vplayout(1, 4)) 
     print(plota, vp = vplayout(1, 5)) 
     print(plota, vp = vplayout(2, 3)) 
     print(plota, vp = vplayout(2, 4)) 
     print(plota, vp = vplayout(2, 5)) 
     print(plota, vp = vplayout(3, 1)) 
     print(plota, vp = vplayout(3, 2)) 
     print(plota, vp = vplayout(3, 3)) 
     print(plota, vp = vplayout(3, 4)) 
     print(plota, vp = vplayout(3, 5)) 

Trả lời

6

Thật dễ dàng để xoay hình trong LaTeX; bạn có thể sử dụng tùy chọn angle=90, như được ghi trong http://yihui.name/knitr/options; xem ví dụ đầy đủ bên dưới:

\documentclass{article} 
\begin{document} 

<<out.extra='angle=90'>>= 
library(ggplot2) 
library(grid) 
df <- data.frame(x = 1:100, y =rnorm(100)) 
plota <- ggplot(df, aes(x, y)) + geom_point(size = 4) 

pushViewport(viewport(layout = grid.layout(3, 5))) 
vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y) 
     print(plota, vp = vplayout(1:2, 1:2)) 
     print(plota, vp = vplayout(1, 3)) 
     print(plota, vp = vplayout(1, 4)) 
     print(plota, vp = vplayout(1, 5)) 
     print(plota, vp = vplayout(2, 3)) 
     print(plota, vp = vplayout(2, 4)) 
     print(plota, vp = vplayout(2, 5)) 
     print(plota, vp = vplayout(3, 1)) 
     print(plota, vp = vplayout(3, 2)) 
     print(plota, vp = vplayout(3, 3)) 
     print(plota, vp = vplayout(3, 4)) 
     print(plota, vp = vplayout(3, 5)) 
@ 

\end{document} 
+1

Cảm ơn Yihui, nhiều ứng dụng. – Maiasaura

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