2011-05-19 46 views
3

我有一个简短的例程,它使用gridExtras包中的grid.arrange函数来排列ggplot和网格图形。我需要在我的Sweave文档中呈现来自我的例程的输出(名义上使用grid.draw进行打印,或者将网格对象作为选项返回)。我不知道如何做到这一点,因为我一直使用“打印”的说法与纯ggplot图形不一样。我已经试过:在Sweave中渲染网格图形

g <- ggkm(survfit.object, returns=T) 
print(g) 

其中g是grid.arrange创建的对象,并且具有类

> class(g) 
[1] "frame" "gTree" "grob" "gDesc" 

任何帮助,将不胜感激

作者Abhijit

+0

如果你的函数返回一个'grob',那么你需要调用'grid.draw(G)'而不是'打印(G)'。在最近版本的'gridExtra'中,你也可以期望'print'使用基本上调用'grid.draw()'的方法'print.arrange()'。 – baptiste 2011-08-31 09:38:23

回答

3

打印对象因为它是创建而不是打印保存的对象似乎工作,虽然我无法解释为什么...

\documentclass{article} 
\begin{document} 


<<>>= 
library(ggplot2) 
library(gridExtra) 

d <- data.frame(x=1:10,y=1:10,z=runif(10)) 
g1 <- qplot(x,y,data=d) 
g2 <- qplot(x,z,data=d) 
@ 

<<fig=TRUE,results=hide>>= 
print(grid.arrange(g1,g2,ncol=2)) 
@ 

\end{document} 

enter image description here

+0

我也遇到过这个问题。你在哪个平台下工作? (windows?nix?mac?) – 2011-05-19 20:33:20

+0

Ubuntu Linux - 但我不明白为什么这个问题会针对特定平台...? – 2011-05-19 20:39:54

+0

我不确定它是平台,而是用于tex的排版程序(例如,Windows上的MikeTex,Mac上的MacTex,Ubuntu上的LaTeX)。当我尝试在一个系统上运行同一个系统时,我发现了一些奇怪的差异。 – 2011-05-19 20:47:34