7

ggplot2 の一部のオブジェクト (関数) は、アルファ チャネルをサポートしています。

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

これは便利な機能ですが、pdf や png ファイルの透過色はさまざまな問題の原因となることがよくあります。

alpha オプションを使用して平坦化された pdf 出力ファイルを取得するにはどうすればよいですか?

4

2 に答える 2

3

私は、knitr + ggplot で作成された大きな Latex ドキュメントに継続的な問題を抱えていました。このドキュメントは、Mac では完全に読み取り可能でしたが、Windows ユーザーには開くことができませんでした。pdfの最適化と平坦化を何度も試みた後、最終的に問題を単一のアルファヘビープロットに分離しました. 私の場合、pdf から png 出力に切り替えると違いが生じました (ただし、質問によると、png では問題が解決しないようです)。

Knitr を使用している場合は、グローバル (またはチャンク固有) の画像出力オプション dev をデフォルトの "pdf" ではなく "png" に設定することで、png バージョンを自動的に作成できます。プロットによっては、これにより、アルファが多い ggplot のサイズと複雑さが大幅に縮小されます。プロット ファイルのサイズを ~700KB から ~70KB に 10 分の 1 に縮小しました (ただし、いくつかの単純なプロットは実際にはサイズが大きくなる可能性があります)。

トレードオフは、プロットの解像度がいくらか失われる可能性があることです。電子メールで下書きを回覧する場合や、特定のタイプのプロットの場合は、これで問題ない場合があります。解像度の低下が大きすぎる場合は、出力の dpi を調整することを検討してください (もちろん、これによりファイル サイズが大きくなりますが、クロスプラットフォームの設定ではうまく機能する可能性があります)。

グローバル画像出力を「png」に設定するには、次のようなコードを使用できます。

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

特定のチャンク (たとえば、アルファが多いプロットのみ) 内で出力を "png" に設定するには、dev="png"オプションを使用します。以下の例は、通常の非アルファ ヘビー プロットを生成します。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 で、Figure 環境にネストされた includegraphics コマンドを使用してドキュメントに簡単に含めることができます。

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

役立つ可能性がある別のリソースは、R Bloggers でホストされている次のブログ投稿です。

Knitr を使用した迅速な公開: 共有および報道用の画像のエクスポート

また、Knitr オプションのプロット セクションも参照してください。

于 2014-12-17T02:32:56.340 に答える