Rのプロットで色に透明度を指定する方法

r
adjustcolor()rgb()を使い、Rのプロットで色に透明度を指定する方法についてまとめます。
Published

2026-02-25

Modified

2026-02-25

Rのプロットで、色に透明度を指定する方法についてまとめます。 例えば、散布図を描くときに、点が重なっている部分がわかりづらいことがあります。 例えば、以下のような散布図を描いたとします。

set.seed(1)
x <- rnorm(1000)
y <- rnorm(1000)
plot(x, y)

塗りつぶしをすると、なおさら点が重なっている部分がわかりづらくなります。

plot(x, y, pch = 16)

このように点が重なっている部分が多い場合、点の色に透明度を指定することで、重なっている部分がわかりやすくなります。 Rでは主に以下の方法で、色に透明度を指定することができます。

16進数のカラーコードの後ろに透明度を指定する方法

Rでは、16進数のカラーコードの後ろに透明度を指定することができます。 例えば、#RRGGBBAAの形式で、AAの部分に透明度を指定することができます。 例えば、以下のようにして、点の色に透明度を指定することができます。

Noteカラーコード

カラーコードは、色を表すためのコードで、通常は#RRGGBBの形式で表されます。

  • RRは赤の値を16進数で表したもの(00からFFまで)
  • GGは緑の値を16進数で表したもの(00からFFまで)
  • BBは青の値を16進数で表したもの(00からFFまで)

例えば、#0000FFは青を表すカラーコードです。

plot(x, y, pch = 16, col = "#0000FF80")

adjustcolor()を使う方法

adjustcolor()は、既存の色を微調整するための関数です。 alpha.f引数を使って、透明度を指定することができます。 例えば、以下のようにして、点の色に透明度を指定することができます。

plot(x, y, pch = 16, col = adjustcolor("blue", alpha.f = 0.5))

このようにすると、点の色が半透明になり、重なっている部分がわかりやすくなります。 また、このほうであれば、色の名前を直接指定できるため、カラーコードを覚える必要がありません。 一つの色を複数の透明度で使いたい場合などは、adjustcolor()を使う方法が便利です。 例えば、以下のようにして、点や線の色に異なる透明度を指定することができます。

plot(x, y, pch = 16, col = adjustcolor("blue", alpha.f = 0.9))

# 95%信頼区間を描く
model <- lm(y ~ x)
ord <- order(x)
x_sorted <- x[ord]
conf <- predict(model, interval = "confidence")
conf_sorted <- conf[ord, ]

polygon(
  c(x_sorted, rev(x_sorted)),
  c(conf_sorted[, 2], rev(conf_sorted[, 3])),
  col = adjustcolor("blue", alpha.f = 0.5),
  border = NA
)

# 回帰線を描く
abline(model, col = adjustcolor("blue", alpha.f = 0.8), lwd = 5)

rgb()を使う方法

rgb()は、赤、緑、青の値を指定して色を作成する関数です。 alpha引数を使って、透明度を指定することができます。 例えば、以下のようにして、点の色に透明度を指定することができます。

plot(x, y, pch = 16, col = rgb(0, 0, 1, alpha = 0.5))

このようにすると、点の色が半透明になり、重なっている部分がわかりやすくなります。 また、この方法では、赤、緑、青の値を直接指定できるため、細かい色の調整が可能です。 注意点としては、各色の値は0から1の範囲で指定する必要があることです。

個人的な好み

個人的には、adjustcolor()を使う方法が便利で、よく使用しています。 その次に直接カラーコードを指定する方法を使用することが多いです。 rgb() はほとんど使用したことがありません。

adjustcolor()を使う場合は、既存の色名を直接指定できるのがとても便利だと思っております。 色名だけでなく、デフォルトカラーのインデックスを指定することもできます。

plot(x, y, pch = 16, col = adjustcolor(2, alpha.f = 0.5))

覚えておくと便利です。