2011-05-19 49 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