3

今、私はパッケージビネットを書くためにsweaveを学んでいます。従来のRグラフィックを使用しています。不思議なことに、高レベルのプロットに追加した凡例は正常に機能しますが、ファイルをスウィーブすると機能しません。最小限の例を次に示します。

 \documentclass{article}
 \begin{document}
 <<fig=TRUE>>=
 plot(0.5, 0.5, xlim = c(0,1), ylim = c(0,1))
 legend("bottomright", c("data", "summary", "curve", "conf. region"), 
      pch = c(2,1,NA,NA), lwd = c(NA,NA, 2,1))
 @
 \end{document}

Rコードは(Rバージョン2.15を実行すると)単一のポイントと2つのポイントで構成される凡例、および2つの異なるタイプの線を生成します。 正しい凡例

sweaveでは、凡例が生成されません。空のボックスが表示されます。 伝説なし

これはスウィーブバグですか、それとも何かを見落としていますか?

4

1 に答える 1

6

問題

これはバグのように見えますが、それ自体に問題があり、問題ではpdf()ありませんSweave()

私が何を意味するかを理解するには、この呼び出しを試してくださいpdf()。上に表示されているのと同じ欠陥プロットが生成されます。

pdf("pdfPlot.pdf")
    plot(0.5, 0.5, xlim = c(0,1), ylim = c(0,1))
    legend("bottomright", c("data", "summary", "curve", "conf. region"), 
         pch = c(2,1,NA,NA), lwd = c(NA,NA, 2,1))
dev.off()

対照的に、cairo_pdf()見栄えの良いプロットを生成します。

cairo_pdf("cairo_pdfPlot.pdf")
    plot(0.5, 0.5, xlim = c(0,1), ylim = c(0,1))
    legend("bottomright", c("data", "summary", "curve", "conf. region"), 
         pch = c(2,1,NA,NA), lwd = c(NA,NA, 2,1))
dev.off()

解決策1:ニットを使用します。

に切り替えても構わないと思っているならknitr、これを修正するのは簡単です。dev="cairo_pdf" 次のように、コードチャンクヘッダーに追加するだけです(必要に応じて、を削除しますfig=TRUE)。

<<dev="cairo_pdf">>=
...
...
@

library(knitr); knit("myScript.Rnw")コードの処理は、現在の呼び出しの代わりに行うのと同じくらい簡単です。Sweave("myScript.Rnw")

解決策2:\includegraphics{}への独自の呼び出しを作成します。

に固執する必要がある場合はSweave()、次のようなことを行うと問題を回避できます。

<<results=tex, term=FALSE, echo=FALSE>>=
cairo_pdf("myPlot.pdf", width=5)
    plot(0.5, 0.5, xlim = c(0,1), ylim = c(0,1))
    legend("bottomright", c("data", "summary", "curve", "conf. region"),
         pch = c(2,1,NA,NA), lwd = c(NA,NA, 2,1))
dev.off()
cat("\\includegraphics{myPlot.pdf}\n\n")
@
于 2012-05-23T21:46:53.067 に答える