Matplotlibのimshow()グラフに凡例を追加する方法を解説
Matplotlibのimshow()で表示した画像データに凡例(レジェンド)を追加する方法を、具体的な手順とサンプルコード付きで解説します。
実装の手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- NumPyを使ってランダムなデータを作成します。
- カラーマップを初期化します。
- サンプルデータから一意な(重複しない)データポイントを取得します。
- 凡例に表示できるよう、各色に対して異なるラベルと色を指定してプロットします。
- 凡例を枠付きで図の右上に配置します。
- 図を表示するには、
show()メソッドを使用します。
サンプルコード
import numpy as np
from matplotlib import pyplot as plt, cm
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
data = np.random.rand(3, 3)
cmap = cm.YlOrBr
unique_data = np.unique(data)
i = 0
for entry in unique_data:
mycolor = cmap(entry * 255 / (max(unique_data) - min(unique_data)))
plt.plot(0, 0, "-", color=mycolor, label="%d"%i)
i += 1
plt.imshow(data, cmap=cmap)
plt.legend(loc="upper right", bbox_to_anchor=(1.25, 1.0))
plt.show()コードのポイント解説
1. カラーマップの準備
この例では、黄色〜オレンジ〜茶色のグラデーションを持つcm.YlOrBrカラーマップを使用しています。カラーマップは、数値データを色に変換するための仕組みです。
2. 一意なデータごとにダミープロットを作成
np.unique(data)でデータ内の重複しない値を取得し、それぞれの値に対応する色を計算します。その後、plt.plot(0, 0, "-", ...)を使って原点に見えないダミーの線をプロットすることで、各色にラベルを割り当てています。これが凡例をimshow()に追加する際の重要なテクニックです。
3. 凡例の位置調整
bbox_to_anchor=(1.25, 1.0)を指定することで、凡例が画像本体と重ならないよう、プロット領域の外側(右側)に配置しています。loc="upper right"はアンカー位置の基準を示します。
出力結果
上記のコードを実行すると、YlOrBrカラーマップで着色された3×3のヒートマップ画像が表示され、その右側に各データ値に対応する色の凡例が枠付きで表示されます。
この手法を使えば、カテゴリごとの色分けを明示したい場合や、特定の値域を強調したい場合などに、視覚的にわかりやすいグラフを作成できます。
-
Matplotlibでhist2dプロットにカラーバーを追加する方法
Matplotlibのhist2dプロット(2次元ヒストグラム)にカラーバーを追加するには、colorbar()メソッドの引数にスカラーマッピング可能なオブジェクト(ScalarMappable)を渡します。 実装手順 NumPyを使ってxとyのデータポイントを作成します。 subplots()メソッドを使って、図とサブプロットを作成します。 hist2d()メソッドを使って、2次元ヒストグラムを描画します。 hist2dから返されるスカラーマッピングオブジェクトをもとに、colorbar()でカラーバーを作成します。 show()メソッドを使って、図を表示します。 コード例 import
-
Python Matplotlibで凡例アイテムを手動で追加する方法
PythonのMatplotlibでは、plt.legend()メソッドを使うことで、グラフに凡例を簡単に作成できます。さらに、frameon引数を指定すると、凡例の周囲に枠線(ボーダー)を表示したままにすることが可能です。 手順 plt.xlabel()メソッドでX軸のラベルを設定します。 plt.ylabel()メソッドでY軸のラベルを設定します。 plot()メソッドでライン(折れ線)を描画します。 位置(loc)と凡例描画フラグを指定することで、最適な場所に凡例を配置し、枠線を表示させることができます。 「blue」と「orange」の要素を含む凡例を設定します。 plt.show