gpt4 book ai didi

r - Sweave 中的自定义图形设备

转载 作者:行者123 更新时间:2023-12-02 23:46:09 25 4
gpt4 key购买 nike

我的problem of inserting a pdf graphic with a special character in a Sweave document已通过在 Sweave 本身之外创建 pdf 图然后导入它来解决。

按照 Sweave 文档,我编写了一个自定义图形设备,它应该以完全相同的方式构建 pdf 图形。然而它不起作用。您能否解释一下为什么下面 Sweave 文档的第二个图形不起作用,而它应该与第一个图形完全一样地创建?我认为应该这样做是错误的吗?

\documentclass{article}

\begin{document}
\SweaveOpts{concordance=TRUE}

<<setup, echo=FALSE>>=
mycairo <- function(name, width = 7, height = 7, ...) {
grDevices::cairo_pdf(name, width = width, height = height)
}
mycairo.off <- function() {
cat("shutting down mycairo\n")
invisible(grDevices::dev.off())
}
@

\section{Export plot}

<<Export_plot, echo=FALSE>>=
cairo_pdf("exported_plot.pdf")
par(mar=c(6,7,0,6))
ylab <- expression(paste("", bar(italic("\u2113")), "(",phi[0], "|", italic(list(x,y)), ")"))
plot(0,0, ylab=ylab, xlab=NA, cex.lab=3)
invisible(dev.off())
@

% insert exported plot
\includegraphics[width=6cm]{exported_plot.pdf}


\section{Direct plot}

<<mycairo_plot, echo=FALSE, fig=TRUE, pdf=TRUE, grdevice=mycairo, width=4, height=4>>=
par(mar=c(6,6,0,6))
ylab <- expression(paste("", bar(italic("\u2113")), "(",phi[0], "|", italic(list(x,y)), ")"))
plot(0,0, ylab=ylab, xlab=NA, cex.lab=1)
@


\end{document}

enter image description here

最佳答案

@user20650 善意地建议我将他/她评论中给出的答案转换为官方答案。

只需在 cairo_pdf 函数中包含 pdf 文件扩展名即可。然后将 mycairo 函数替换为:

mycairo <- function(name, width = 7, height = 7, ...) { 
grDevices::cairo_pdf(sprintf("%s.pdf", name), width = width, height = height)
}

作为旁注,您也可以将其设置为全局选项,而不是在每个图形 block 中指定 grdevice=mycairo:

\SweaveOpts{grdevice=mycairo}

关于r - Sweave 中的自定义图形设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31221471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com