问题
这似乎是一个错误,但它是一个问题,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。
如果您愿意切换到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")
@