matplotlib の scatter プロットでは、各データ点に対して色を割り当てるために colormap(カラーマップ)を利用できます。以下に、詳細な解説を示します。
目次
基本概念
- scatter 関数
plt.scatter()
は散布図を描画するための関数です。通常、x 軸と y 軸の座標を与えてプロットしますが、オプション引数c
を用いることで、各点に対応する数値データを色として表現できます。 - colormap(カラーマップ)
カラーマップは、数値データを特定の色に変換するためのマッピングです。cmap
引数で指定し、色のグラデーションをコントロールします。たとえば、’viridis’、’plasma’、’inferno’、’magma’ などの組み込みカラーマップが用意されています。
あわせて読みたい


cmap(colormap)一覧と選び方・使用方法 [matplotlib]
本記事では、matplotlib におけるカラーマップの種類、特徴、選び方、さらには具体的な使用例について詳しく解説します。 カラーマップの一覧 以下に、各カテゴリーごと…
散布図でcmapを使う方法
散布図において各データポイントに異なる色を付けるためには、plt.scatter()
のc
引数にデータの値を渡し、cmap
引数で使用するカラーマップを指定します。
- c
各点に対応する数値の配列を指定します。この値がカラーマップにより色に変換されます。
※ 数値データである必要があり、RGB のタプルやカラーコードのリストを与える場合は、直接色として扱われます。 - cmap
使用するカラーマップを指定します。文字列(例:'viridis'
)またはmatplotlib.cm
モジュールから取得したカラーマップオブジェクトを渡すことができます。 - norm (オプション)
値の正規化を制御するためのパラメータです。matplotlib.colors.Normalize
などを用いて、データの最小値・最大値を明示的に設定できます。これにより、色の対応範囲を調整可能です。
基本のscatter plot
例えば、ランダムなデータを生成し、scatter 関数でプロットする場合、以下のようなコードになります。
import matplotlib.pyplot as plt
import numpy as np
# 乱数シードの固定(再現性のため)
np.random.seed(0)
# データの生成
x = np.random.rand(50)
y = np.random.rand(50)
# 基本的な scatter プロット
plt.scatter(x, y)
plt.title('Basic Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

colormap を使う例
以下は、数値データを用いて色分けを行う例です。
# 各データポイントにランダムな値を割り当て
colors = np.random.rand(50)
# colormap を利用した scatter プロット
plt.scatter(x, y, c=colors, cmap='viridis', s=100)
plt.title('Colormap Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

ここで、c
パラメータに渡された colors
の値が、各点の色としてマッピングされ、cmap='viridis'
により「viridis」というカラーマップが適用されます。サイズを変更するために s=100
を指定しています。
点サイズも変更する例
点サイズs
も変更した場合は、次のような見た目になります。
import matplotlib.pyplot as plt
import numpy as np
# データの生成
np.random.seed(0)
x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100) # 各点に対応する数値データ
sizes = 100 * np.random.rand(100) # 点のサイズをランダムに設定
# 散布図の描画
plt.figure(figsize=(8, 6))
scatter = plt.scatter(x, y, c=colors, s=sizes, cmap='viridis', alpha=0.7)
plt.colorbar(scatter) # カラーバーの表示
plt.title("Matplotlib の scatter と colormap の例")
plt.xlabel("X軸")
plt.ylabel("Y軸")
plt.show()

この例では、plt.colorbar()
によって対応する数値範囲も表示しています。
- colorbar()
プロットに色の目盛り(カラーバー)を追加する際に使用します。散布図の横や下にカラーマップのグラデーションを示す目盛りを表示し、各色がどの数値範囲に対応するかを視覚的に理解できます。
応用例と注意点
- データの正規化
デフォルトでは、c の最小値から最大値までがカラーマップ全体にマッピングされます。norm
を使用して、特定の範囲(例:vmin
とvmax
)に対応させることが可能です。
あわせて読みたい


カラーマップの範囲指定方法・高度な正規化の方法。 [matplotlib]
本記事では、カラーマップの範囲をどのように指定・調整するかについて詳しく解説します。 カラーマップの範囲とは colormap の「範囲」とは、データの最小値から最大値…
- 逆順カラーマップ
カラーマップ名の末尾に'_r'
を付けることで、色の順序を逆にできます。例:'viridis_r'
あわせて読みたい


matplotlib で colormap を反転する2つの方法
matplotlib のカラーマップ(colormap)はデータの値を色で表現します。場合によっては、既存のカラーマップの色の並び順を反転させることで、データの見せ方を調整した…
- 複数の属性との併用
s
パラメータで点のサイズ、alpha
で透明度なども指定でき、見た目の調整に役立ちます。また、edgecolors
やlinewidths
を用いることで、点の輪郭をカスタマイズすることもできます。
まとめ
- matplotlib の scatter プロットでは、
c
パラメータを用いて各データ点に数値データを割り当て、その数値に応じた色をcmap
で指定したカラーマップから取得します。 - カラーマップは、視覚的なデータの傾向を捉えるために非常に有用であり、色の範囲を調整するために
norm
パラメータも利用可能です。 - カラーバー(
plt.colorbar()
)を追加することで、各色がどの数値範囲に対応するかを明示的に示すことができます。
このように、matplotlib の scatter とカラーマップの組み合わせは、データの視覚化において非常に強力なツールとなります。