ヒートマップは、2次元グリッドのデータを視覚化する上で非常に役立ちます。色の濃淡によって各値の大きさを表します。強力なPythonデータ可視化ライブラリであるMatplotlibは、魅力的なヒートマップを作成するためのいくつかの方法を提供しています。この記事では、imshow()
、Seabornライブラリの活用、pcolormesh()
の3つの一般的な方法について説明します。各方法について、明確な例と説明を交えて解説します。
目次
imshow()
:シンプルなアプローチ
Matplotlibのimshow()
関数は、ヒートマップを生成する簡単な方法を提供します。入力として2次元配列を受け取り、選択したカラーマップを使用して値を色にマッピングします。
import matplotlib.pyplot as plt
import numpy as np
# サンプルデータ
data = np.random.rand(10, 10)
# ヒートマップの作成
plt.imshow(data, cmap='viridis')
# カラーバーの追加
plt.colorbar(label='値')
# ラベルとタイトルの追加
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.title('imshow()を使った2Dヒートマップ')
# プロットの表示
plt.show()
このコードは、セルの色の濃淡がdata
配列の対応する値を反映するヒートマップを作成します。cmap
引数はカラーマップ(例:’plasma’、’magma’、’inferno’、’cividis’)を選択します。colorbar()
は、色を値にマッピングする凡例を追加します。
Seabornのheatmap()
:拡張機能
Matplotlibを基盤とするSeabornは、統計的に有益で視覚的に魅力的なプロット(ヒートマップを含む)を作成するための高レベルインターフェースを提供します。そのheatmap()
関数は、プロセスを簡素化し、便利な機能を追加します。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# サンプルデータ
data = np.random.rand(10, 10)
# ヒートマップの作成
sns.heatmap(data, annot=True, cmap='coolwarm', fmt=".2f")
# タイトルの追加
plt.title('Seabornを使った2Dヒートマップ')
# プロットの表示
plt.show()
このSeabornの例は、同様のヒートマップを生成しますが、annot=True
により各セルに数値が表示され、可読性が向上します。fmt
はアノテーションのフォーマットを制御します。
pcolormesh()
:不規則なデータと精密な制御
Matplotlibのpcolormesh()
は、不規則に配置されたデータのヒートマップ、またはセルの境界を正確に制御する必要がある場合に最適です。
import matplotlib.pyplot as plt
import numpy as np
# サンプルデータ(meshgridを使用してデモ)
x = np.arange(0, 10, 1)
y = np.arange(0, 10, 1)
X, Y = np.meshgrid(x, y)
data = np.sin(X) * np.cos(Y)
# ヒートマップの作成
plt.pcolormesh(X, Y, data, cmap='RdBu')
# カラーバーの追加
plt.colorbar(label='値')
# ラベルとタイトルの追加
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.title('pcolormesh()を使った2Dヒートマップ')
# プロットの表示
plt.show()
この例では、meshgrid
を使用してx座標とy座標のグリッドを作成し、pcolormesh()
のセルの境界を定義します。これはimshow()
よりも柔軟性があります。RdBu
カラーマップは、正の値と負の値の両方を持つデータに適した発散型スキームです。必要なライブラリはpip install matplotlib seaborn
でインストールしてください。