Python
 Computer >> コンピューター >  >> プログラミング >> Python

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のヒートマップ画像が表示され、その右側に各データ値に対応する色の凡例が枠付きで表示されます。

この手法を使えば、カテゴリごとの色分けを明示したい場合や、特定の値域を強調したい場合などに、視覚的にわかりやすいグラフを作成できます。

  1. Matplotlibでhist2dプロットにカラーバーを追加する方法

    Matplotlibのhist2dプロット(2次元ヒストグラム)にカラーバーを追加するには、colorbar()メソッドの引数にスカラーマッピング可能なオブジェクト(ScalarMappable)を渡します。 実装手順 NumPyを使ってxとyのデータポイントを作成します。 subplots()メソッドを使って、図とサブプロットを作成します。 hist2d()メソッドを使って、2次元ヒストグラムを描画します。 hist2dから返されるスカラーマッピングオブジェクトをもとに、colorbar()でカラーバーを作成します。 show()メソッドを使って、図を表示します。 コード例 import

  2. Python Matplotlibで凡例アイテムを手動で追加する方法

    PythonのMatplotlibでは、plt.legend()メソッドを使うことで、グラフに凡例を簡単に作成できます。さらに、frameon引数を指定すると、凡例の周囲に枠線(ボーダー)を表示したままにすることが可能です。 手順 plt.xlabel()メソッドでX軸のラベルを設定します。 plt.ylabel()メソッドでY軸のラベルを設定します。 plot()メソッドでライン(折れ線)を描画します。 位置(loc)と凡例描画フラグを指定することで、最適な場所に凡例を配置し、枠線を表示させることができます。 「blue」と「orange」の要素を含む凡例を設定します。 plt.show