Matplotlibで数値を色(RGB)にマッピングする方法を解説
Matplotlibでは、colors.Normalizeとcm.ScalarMappableを組み合わせることで、任意の数値をRGBA形式のカラータプル(赤・緑・青)へ簡単にマッピングできます。この記事では、1.0〜2.0の範囲にある10個の値をグレースケールの色へ変換する例を通じて、具体的な手順をわかりやすく解説します。
値を色にマッピングする手順
1.00〜2.00の範囲で10個の値からなるリストを作成します。
vminとvmaxで指定した区間に対して、データを線形に正規化します。
スカラー値をRGBAへ変換するためのマッパーオブジェクトを取得します。
各値を順に処理し、対応する色の値へマッピングします。
元の値と、マッピング後の赤・緑・青の値を並べて出力します。
サンプルコード
import numpy as np
from matplotlib import cm, colors
values = np.linspace(1.0, 2.0, 10)
norm = colors.Normalize(vmin=1.0, vmax=2.0, clip=True)
mapper = cm.ScalarMappable(norm=norm, cmap=cm.Greys_r)
for value in values:
print("%.2f" % value, "=",
"red:%.2f" % mapper.to_rgba(value)[0],
"green:%.2f" % mapper.to_rgba(value)[1],
"blue:%.2f" % mapper.to_rgba(value)[2])
実行結果
1.00 = red:0.00 green:0.00 blue:0.00 1.11 = red:0.13 green:0.13 blue:0.13 1.22 = red:0.28 green:0.28 blue:0.28 1.33 = red:0.41 green:0.41 blue:0.41 1.44 = red:0.53 green:0.53 blue:0.53 1.56 = red:0.66 green:0.66 blue:0.66 1.67 = red:0.78 green:0.78 blue:0.78 1.78 = red:0.87 green:0.87 blue:0.87 1.89 = red:0.95 green:0.95 blue:0.95 2.00 = red:1.00 green:1.00 blue:1.00
コードのポイント
colors.Normalize(vmin=1.0, vmax=2.0, clip=True)は、入力値を0.0〜1.0の範囲へ線形変換する正規化クラスです。clip=Trueを指定すると、範囲外の値は自動的に最小値または最大値にクリップされるため、想定外の値が混ざっても安全に処理できます。
cm.ScalarMappable(norm=norm, cmap=cm.Greys_r)は、正規化済みの値を指定したカラーマップに基づいてRGBAタプルへ変換するオブジェクトです。to_rgba()メソッドに値を渡すことで、赤・緑・青・アルファの各成分を0.0〜1.0の範囲で取得できます。実行結果を見ると、値が小さいほど黒(0.0)に、大きいほど白(1.0)に近づいており、数値の大小がそのまま明暗の差として表現されていることが確認できます。
この手法は、散布図やヒートマップなどで数値に応じた色分けを行いたい場合に非常に便利です。カラーマップをcm.viridisやcm.RdYlGnなどに変更すれば、目的に応じたさまざまな配色でデータを可視化できます。
-
Matplotlibを使ってPythonで3D密度マップを描画する方法を徹底解説
MatplotlibとNumPyを組み合わせると、Pythonで簡単に3D密度マップ(濃度分布図)を作成できます。本記事では、pcolormesh()メソッドを使って擬似カラープロットとして密度マップを可視化する具体的な手順を、サンプルコード付きでわかりやすく解説します。 3D密度マップを描画する基本の手順 NumPyでデータを生成する:side、x、y、zの各データをNumPyで作成します。特にlinspace関数を使うと、指定した2点間の範囲を任意の分割数で等間隔にデータ生成できるため便利です。 座標行列を作成する:sideデータをもとにmeshgrid()を使い、座標ベクトルから2次元
-
Python MatplotlibでY軸の値(目盛りラベル)を指定する方法
PythonのMatplotlibでは、yticks()メソッドを使うことで、Y軸に表示する値や目盛りラベルを自由に指定できます。X軸の場合はxticks()を使用します。この記事では、具体的な手順とサンプルコードを通して、軸の目盛りをカスタマイズする方法を解説します。 Y軸の値を指定する手順 以下の手順で、Matplotlibのグラフに任意の目盛りラベルを設定できます。 numpyを使ってxおよびyのデータポイントを作成します。 軸に表示したい値として、文字列のリストを作成します。 xticks()メソッドとyticks()メソッドを使用し、それぞれX軸・Y軸の目盛りの位置とラベルを指定し