2012-09-15 8 views
6

私は以下のように配置したいと思っている一連のggplotを持っていて、knitrによって解析された文書に挿入されています。本当に小さい肖像画の人物を持っているのではなく、私はこれを風景に回転して、できるだけページを埋めるようにしたいと思います。何か案は?ggplotをランドスケープにするにはどうすればよいですか?

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)) 

答えて

6

LaTeXでFigureを回転させるのは簡単です。 http://yihui.name/knitr/optionsに記載されているように、オプションangle=90を使用できます。下記の完全な例を参照してください。

\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

ありがとうございました。 – Maiasaura