2012-01-25 72 views
1

我似乎沒有任何其他方法通過Sweave包含圖的問題。然而,plot.mca(),從FactoMineR包的方法似乎沒有它的情節通過。它確實創建了一個Rplot.pdf文件 - 但無論出於何種原因,它不會被重命名爲「RnwFilename-00X.pdf」,並且當您在RStudio中使用compilePdf()時不會將其包含在生成的PDF中。plot.MCA()不包括在Sweave中

這裏有一個簡單的例子,爲自己嘗試。

注意您可能需要:install.packages("FactoMineR")

\documentclass[a4paper]{article} 

% PREAMBLE 
\begin{document} 

\begin{center} 
<<echo=false,fig=true>>= 
library(FactoMineR) 
x <- data.frame(
A=sample(letters[1:3],100,rep=T), 
B=sample(letters[1:4],100,rep=T), 
C=sample(letters[1:3],100,rep=T)) 
fit.mca <- MCA(x, graph=FALSE) 
plot(fit.mca, invisible="ind") 
@ 
\end{center} 

\end{document} 

更新 - 在錯誤信息的更多細節:

LaTeX errors: 
!pdfTeX error: C:\Program Files (x86)\MiKTeX 2.9\miktex\bin\pdflatex.EXE (file 
R:/.../RnwFilename-010.pdf): PDF inclusion: required page do 
es not exist <0> 
+1

如果繪圖方法'plot.fit.mca'是一個格或ggplot圖,那麼你可能需要一個明確的'print()':這是一個Sweave/R FAQ(不記得數字.. 。) –

+0

感謝Ben,那是我嘗試的第一件事,沒有骰子。 :( –

回答

2

它爲我,如果我告訴plot.MCA不是創建新設備:

plot(fit.mca, invisible="ind",new.plot = FALSE) 

編輯一下,這似乎是次優一個繪圖函數的行爲,大多數用戶(以及其他代碼,很清楚)會期望依靠R的默認動作自動打開一個新設備。如果用戶明確告知它(通過調用pngpdf等或實際設置new.plot = TRUE),繪圖功能應該只能打開新設備。不過,意見可能會有所不同。

+1

你打我吧,我完全同意默認行爲 –

+0

而且這是有效的 - 我同意你的操作,完全沒有預期 - 我讀了'new.plot',但沒有什麼概念它的意思 –

+0

@BrandonBertelsen我想出來的唯一原因是因爲我試着在Sweave文檔外使用'pdf()'和'dev.off()'生成'pdf',並且_also_失敗,這導致我看看'plot.MCA'中的代碼,在那裏我發現了對'dev.new'的調用,這使得燈泡在我頭頂下降。 – joran