我在使用 knit + ggplot 创建的大型 Latex 文档时遇到了持续的问题,该文档在我的 Mac 上完全可读,但 Windows 用户无法打开。经过多次尝试优化和扁平化 pdf,我最终将问题隔离到单个 alpha 重的图上。就我而言,从 pdf 切换到 png 输出会产生影响(尽管根据您的问题,听起来 png 可能无法解决您的问题)。
如果您使用 knit,则可以通过将全局(或特定于块的)图像输出选项 dev 设置为“png”而不是默认的“pdf”来自动创建 png 版本。根据绘图的不同,这可以显着缩小 alpha 重的 ggplot 的大小和复杂性。我将绘图文件大小减少了 10 倍,从 ~700KB 减少到 ~70KB(不过,一些更简单的绘图实际上可能会增加大小)。
代价是绘图的分辨率可能会有所损失。对于通过电子邮件分发草稿或对于某些类型的图来说,这可能没问题。如果分辨率损失太大,请考虑调整输出的 dpi(当然,这会增加文件大小,但在跨平台设置中仍然可能效果更好)。
要将全局图像输出设置为“png”,您可以使用如下代码:
library(knitr)
opts_chunk$set(dev="png", dpi=200)
要将输出设置为特定块内的“png”(例如,仅包含 alpha 的图),请使用dev="png"
选项。下面的示例生成一个常规的、非 alpha 重图。采用针织+乳胶,include=FALSE
选项将阻止自动包含 pdf 版本(我不确定这对于 RMarkdown 是否有必要)。
<<myplot, dev="png", dpi=200, include=FALSE>>
library(ggplot2)
x <- 1:1000
y <- 2*x + rnorm(1000, 0, 100)
df <- data.frame(x,y)
ggplot(df, aes(x=x, y=y)) + geom_point(alpha=.3)
@
上面的代码将生成一个名为 myplot.png 的文件,在 Latex 中,可以使用嵌套在图形环境中的 includegraphics 命令轻松地将其包含在文档中。
\begin{figure}[h!]
\centering
\scalebox{.5}{\includegraphics{myplot.png}}
\caption{Some caption \label{fig:myplot}}
\end{figure}
另一个可能有用的资源是 R Bloggers 上托管的这篇博客文章:
使用knitr进行快速发布:导出图像以供共享和新闻发布 http://www.r-bloggers.com/fast-track-publishing-using-knitr-exporting-images-for-sharing-and-press-part-iii/
另请参阅绘图部分针织选项 http://yihui.name/knitr/options.