2012-12-12 110 views
6

GGPLOT2的某些對象(功能)支持alpha通道。拼合alpha通道中GGPLOT2

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

這是一個不錯的功能,但透明色PDF和PNG文件往往是多元化的煩惱之源。

我如何可以使用Alpha選項,並得到平坦的PDF輸出文件?

+0

您可能需要使用外部PDF的工具來做到這一點...但似乎Adobe Acrobat之外的選擇是有限的...... http://askubuntu.com/questions/128595/flattening-pdf-transparency –

回答

0

爲了避免與膠乳圖形相似的麻煩,我生成R. PNG文件在那裏,你可以用type = c("cairo", "cairo-png", ...)選項打球,對我來說,「窗口」也能正常工作。之後,我用imagemagick將它轉換爲jpg,並將此jpg包含在我的LaTeX文件中,然後將pdfLaTeX結果包含在平整的pdf輸出中。

3

我曾與knitr + ggplot創造了大量乳膠文檔,這是我的Mac上完全可讀但不能打開Windows用戶持續存在的問題。經過多次嘗試優化和壓縮pdf後,我終於將問題孤立在一個單一的阿爾法重陰謀。在我的情況下,從pdf切換到PNG輸出有所不同(儘管根據你的問題,這聽起來像PNG可能無法解決你的問題)。

如果您使用的是knitr,您可以通過將全局(或特定於塊的)圖像輸出選項dev設置爲「png」而不是默認的「pdf」來自動創建png版本。取決於情節,這可以顯着縮小α重ggplot的複雜度。我的繪圖文件大小從〜700KB減少到〜70KB(一些簡單的繪圖實際上可能會增加)。

權衡是有可能成爲該地塊分辨率的一些損失。爲了通過電子郵件或特定類型的情節傳播草稿,這可能沒有問題。如果分辨率損失太大,請考慮調整輸出的dpi(儘管這當然會增加文件大小,但在跨平臺設置中仍可能會更好)。

設置全局圖像輸出到「PNG」你可以使用這樣的代碼:

library(knitr) 
    opts_chunk$set(dev="png", dpi=200) 

要設置輸出爲「PNG」一個塊特定的範圍內(例如,只是情節是爲α-重),請使用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) 
    @ 

上面的代碼將產生,在乳膠,然後可以很容易地包括在文檔中與includegraphics命令嵌套在圖環境中的文件名爲myplot.png。

\begin{figure}[h!] 
    \centering 
    \scalebox{.5}{\includegraphics{myplot.png}} 
    \caption{Some caption \label{fig:myplot}} 
    \end{figure} 

可能有幫助的另一個資源是在r博客託管這篇博客文章:

Fast-track publishing using knitr: exporting images for sharing and press

而且,看到的knitr options的圖形部分。