ggplot2的某些对象(函数)支持alpha通道。
http://docs.ggplot2.org/current/geom_point.html
这是一个不错的功能,但pdf和png文件中的透明色彩通常会带来多样化的麻烦。
如何使用alpha选项并获得展平的pdf输出文件?
答案 0 :(得分:3)
我使用knitr + ggplot创建的大型Latex文档存在问题,该文档在我的Mac上完全可读,但对Windows用户来说无法打开。经过多次尝试优化和展平pdf之后,我终于将问题分离到单个alpha-heavy图中。在我的情况下,从pdf切换到png输出有所不同(但是,根据你的问题,听起来png可能无法解决你的问题)。
如果您正在使用knitr,您可以通过将全局(或特定于块)图像输出选项dev设置为" png"来自动创建png版本。而不是默认的" pdf"。根据情节,这可以缩小尺寸和尺寸。 α重的ggplot的复杂性显着。我的绘图文件大小减少了10倍,从~700KB减少到~70KB(虽然一些更简单的绘图实际上可能会增加)。
权衡是因为这些情节可能会有一些解决方案的损失。为了通过电子邮件或某些类型的地块传播草案,这可能没问题。如果分辨率损失太大,请考虑调整输出的dpi(当然,这会增加文件大小,但在跨平台设置中仍然可以更好地工作)。
将全局图像输出设置为" png"你可以使用这样的代码:
library(knitr)
opts_chunk$set(dev="png", dpi=200)
将输出设置为" png"在特定块(例如,只是alpha重的图)中,使用dev="png"
选项。下面的示例生成一个常规的非alpha重图。使用knitr + Latex时,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上发布的这篇博文:
Fast-track publishing using knitr: exporting images for sharing and press
另请参阅knitr options的“情节”部分。
答案 1 :(得分:0)
为了避免在LaTex中使用类似图形的麻烦,我用R生成png文件。你可以使用type = c("cairo", "cairo-png", ...)
选项,对我来说,“windows”在那里工作得很好。然后,我将它转换为带有imagemagick的jpg,并将此jpg包含在我的LaTeX文件中,pdfLaTeX结果然后以平展的pdf输出。