使用knitr时如何从多个绘图中旋转一个绘图?

使用knitr时如何从多个绘图中旋转一个绘图?,r,knitr,R,Knitr,我正在使用knitr进行绘图。我想把其中一个旋转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,

我正在使用knitr进行绘图。我想把其中一个旋转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}

但是这两个图是在一个函数中按grid.newpage()排列的。我怎样才能做到这一点?非常感谢

我认为您可以在区块选项中使用
out.extra

从knitr文档:

out.extra:(NULL;字符)数字的额外选项,例如。 乳胶输出中的out.extra='angle=90'将使图形旋转90度 度;它可以是任意字符串,例如,您可以写入多个字符串 图2本选项中的选项;它也适用于HTML图像(额外 选项将写入标签中,例如。 out.extra='style=“display:block;”)

=
# ... 
@

注意,您需要编写
results='asis'
而不是
asis
。如下面的答案所示,这(旋转90度)是文档中使用的示例。谢谢。它会像
out.extra='angle=c(0,90)
吗?因为我有两个绘图,我只想旋转第二个。如果你想为这两个绘图声明不同的选项,那么这两个绘图应该是分块的。@BrandonBertelsen我认为CSS3是可能的,例如
out.extra=“style='transform:rotate(90deg);”
,但这取决于浏览器支持(例如,请参见@Lin),这是一个合理的请求;请将其写入,以便我将来尝试实施。@Lin现在已实施:
\usepackage{pdflscape}
\begin{landscape}
....
\end{landscape}
<<out.extra='angle=90', cache=TRUE, echo=FALSE, message=FALSE, warning=FALSE, comment=NA, eval=TRUE, results='asis'>>=
# ... 
@