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

Seabornのヒートマップの注釈に単位(%)を追加する方法

Seabornで作成したヒートマップのセル内注釈(アノテーション)に「%」などの単位を追加したい場合、描画後にテキストオブジェクトを書き換えることで簡単に実現できます。この記事では、その具体的な手順とコード例を紹介します。

実装の手順

  • 図のサイズを設定し、figure.autolayout を有効にしてサブプロット間・周囲の余白を自動調整します。

  • NumPyを使って、5×5のランダムな値を持つ行列(2次元配列)を作成します。

  • sns.heatmap() を使って、長方形データを色分けされたマトリックスとして可視化します。このとき annot=True で各セルに数値を表示します。

  • 軸オブジェクトが持つテキスト要素を1つずつ取り出し、末尾に「%」という単位を連結して注釈を書き換えます。

  • plt.show() メソッドで図を画面に表示します。

コード例

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = np.random.rand(5, 5)

ax = sns.heatmap(data, annot=True, fmt='.1f', square=1, linewidth=1.)

for t in ax.texts: t.set_text(t.get_text() + " %")

plt.show()

ポイント解説

ここでの鍵となるのは、ヒートマップ描画後に取得できる ax.texts です。sns.heatmap()annot=True オプションによって各セルに配置されたテキストは、MatplotlibのTextオブジェクトとして ax.texts に格納されています。ループで各テキストを取り出し、t.get_text() で現在の文字列(数値)を取得してから、t.set_text() で「%」を付け加えた新しい文字列に置き換えています。

また、fmt='.1f' を指定することで、小数点以下1桁の形式で数値が表示されるため、「12.3 %」のように見やすい注釈になります。同様の手法を使えば、「kg」「°C」「円」など、任意の単位や接尾辞・接頭辞を自由に追加できます。

出力結果

Seabornのヒートマップの注釈に単位(%)を追加する方法

実行すると、5×5のヒートマップのすべてのセルに、小数点以下1桁の数値と「%」記号が組み合わされた注釈が表示されます。データの割合や比率を表す場合などに、このテクニックは非常に便利です。

  1. Matplotlibでデータ座標を使って図の外側に注釈を配置する方法

    Matplotlibでは、annotate()メソッドを活用することで、プロット領域(描画範囲)の外側に注釈(アノテーション)を自由に配置できます。グラフのタイトルや説明を目立つ位置に表示したい場合に非常に便利なテクニックです。実装手順figureサイズを設定し、サブプロット間および周囲のパディングを調整します。NumPyを使用してxとyのデータポイントを作成します。subplots()メソッドを使って、figureとサブプロットのセットを作成します。scatter()メソッドで星形マーカーとcopperカラーマップを使用して、xとyのデータポイントをプロットします。注釈を描画範囲の外側に配置

  2. Seabornで2つのグラフを横に並べてプロットする方法(Matplotlib)

    データ分析では、複数のグラフを1つの図の中に並べて比較できると非常に便利です。この記事では、SeabornとMatplotlibを組み合わせて、2つのグラフを横並び(1行2列)で表示する方法を解説します。 実装の流れ 2つのグラフを並べて描画するには、以下の手順を実行します。 plt.subplots(1, 2) を使い、figureサイズ(7, 7)で1行2列のサブプロットを作成します。 Pandasを使って、col1 と col2 のキーを持つデータフレームを作成します。 countplot() メソッドを使用し、カテゴリごとの観測値の件数を棒グラフで可視化します。 subplots_a