在ggplot2中展平alpha通道

时间:2012-12-12 21:54:04

标签: r ggplot2 alpha

ggplot2的某些对象(函数)支持alpha通道。

http://docs.ggplot2.org/current/geom_point.html

这是一个不错的功能,但pdf和png文件中的透明色彩通常会带来多样化的麻烦。

如何使用alpha选项并获得展平的pdf输出文件?

2 个答案:

答案 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输出。