问题
这似乎是一个错误,但它是一个问题,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")
@