見出し画像

ggplot2: 散布図の色に密度を反映して色付け

散布図のドットを色付けする際に、ドットが集まっている部分ほど濃く色付けする方法を紹介します。

ドットの密度が高い部分を濃くしたいわけですが、実際に「密度」を計算する必要はありません。ドットの色に、半透明な色を指定することで代用できます。半透明な色どうしが重なれば重なるほど、色は濃くなるので、ドットが密集していると濃い色になります。

不透明度(アルファ)を指定

名前や16進数で指定する通常の色は、不透明度の値を持ちません。不透明度は、 transparency や アルファチャンネルなどと呼ばれるパラメーターで追加する必要があります。

アルファチャンネルは、ある色が後ろ側にある色をどの程度覆い隠すかを表します。

https://developer.mozilla.org/ja/docs/Glossary/Alpha

ggplot2 では、 geom_point() などで色を指定する際にオプションで、 alpha = 0.3 などと記述することで、アルファを設定できます。

ボルケーノプロットを例にすると、下記のようになります。alpha  は、 0 から 1 の範囲で指定します。0が完全に透明で、1が不透明です。

g <- ggplot(de_result, aes(logFC, -log10(PValue)))
g + geom_point(alpha = 0.2)

結果は、下図のようにドットが密集している中央ほど、黒くなります。

透明度を追加したボルケーノプロット。

黒以外の色を指定した場合も同様です。それぞれの geom_point() にアルファを設定できます。

g + geom_point(data = non_deg, color = "#969696") +
  geom_point(data  = up_deg,   color = "#FC9272", alpha = 0.3) +
  geom_point(data  = down_deg, color = "#9ECAE1", alpha = 0.3) +
  geom_vline(xintercept = c(-1, 1), linetype = "dotted") +
  geom_hline(yintercept = 1.3, linetype = "dotted")
色を指定して、さらに不透明度を追加したボルケーノプロット


この記事が気に入ったらサポートをしてみませんか?