12

私はプロットでknitrを使用しています。そのうちの1つを90度回転させたいと思います。例えば:

\documentclass{article}

\begin{document}


<<cache=TRUE, echo=FALSE, message=FALSE, warning=FALSE, comment=NA, eval=TRUE, results=asis>>=

library("ggplot2")
library("gridExtra")

func <- function(data,x,y) {

  p1 <- ggplot(data.frame(data), aes(x = x, y = y)) + geom_point()
  p2 <- ggplot(data.frame(data), aes(x = x, y = y)) + geom_point()
  p3 <- ggplot(data.frame(data), aes(x = x, y = y)) + geom_point()
  p4 <- ggplot(data.frame(data), aes(x = x, y = y)) + geom_point()

  grid.newpage() 
    pushViewport(viewport(width = .9, height = .9,layout = grid.layout(nrow=2, ncol=2)))
    print(p1,vp = viewport(layout.pos.row = 1, layout.pos.col = 1))
    print(p2,vp = viewport(layout.pos.row = 2, layout.pos.col = 1))
    print(p3,vp = viewport(layout.pos.row = 1, layout.pos.col = 2))
    print(p4,vp = viewport(layout.pos.row = 2, layout.pos.col = 2))

  grid.newpage() 
    pushViewport(viewport(width = .8, height = .5,layout = grid.layout(nrow=1, ncol=2)))
    print(p1,vp = viewport(layout.pos.row = 1, layout.pos.col = 1))
    print(p2,vp = viewport(layout.pos.row = 1, layout.pos.col = 2))

}

x <- runif(20,0,1)
y <- rnorm(20)
test <- cbind(x,y)
func(test,x=test$x,y=test$y)

@    

\end{document}

2ページ目とグラフの両方を90度回転させたい。私はこれを1ページに使用できることを知っています:

\usepackage{pdflscape}
\begin{landscape}
....
\end{landscape}

ただし、2つのプロットは1つの関数内でgrid.newpage()によって配置されます。どうすればそれを達成できますか?どうもありがとう!

4

1 に答える 1

16

out.extraチャンクオプションで使用できると思います。

knitrドキュメントから:http://yihui.name/knitr/options

out.extra:(NULL;文字)図の追加オプション。たとえば、LaTeX出力のout.extra ='angle = 90'は、図を90度回転します。任意の文字列にすることができます。たとえば、このオプションで複数のFigureオプションを記述できます。HTML画像にも適用されます(追加のオプションはタグに書き込まれます。例:out.extra ='style = "display:block;"')

<<out.extra='angle=90', cache=TRUE, echo=FALSE, message=FALSE, warning=FALSE, comment=NA, eval=TRUE, results='asis'>>=
# ... 
@
于 2012-11-27T22:11:11.737 に答える