[seaborn] 16. 2次元ヒートマップをheatmapで表示

matplotlib

はじめに

簡潔かつ明瞭にデータを可視化できるライブラリであるseabornを用いて、2次元ヒートマップをheatmapで表示する方法について説明する。

コード&解説

モジュールのインポート

バージョン

データの作成

2次元平面のランダムウォークでヒートマップデータを作成する。2次元ランダムウォークについては下記記事で解説した。

[matplotlib] 53. 2次元ランダムウォークのヒートマップ
2次元ランダムウォークの動いた範囲を10 x 10の2次元ヒストグラム(ヒートマップ)で示す方法について説明する。

ランダムウォークの様子をプロットすると以下のようになる。

np.histogram2dによるヒートマップデータの作成

プロットしたx軸、y軸の範囲でヒートマップデータを作成する。

作成したデータはpd.DataFrame()でデータフレーム化し、columnsとindexの名前をそれぞれx,yとした。

heatmapの表示

sns.heatmap(hdata,ax=ax)だけで下のヒートマップが表示できる。

データ値の表示範囲の設定

vmin & vmaxを設定することで、vminからvmaxの範囲でヒートマップを表示できる。

cmapの種類を変える

cmap=”coolwarm”のようにmatplotlibで利用可能なcmapを設定することでカラーマップを変更することができる。

カラーマップの中心を定める

centerを設定することでカラーマップの中心を決めることができる。これによってcmapが変化する場合もある。

はずれ値の影響を避けてcmapの範囲を定める

robust=Trueでvmin,vmaxが設定されていない場合、カラーマップの範囲は極値ではなく、ロバストな分位数によって設定される。

各セルにデータ値を表示

annot=Trueで各セルにデータ値を表示できる。

データ値の表示形式の設定

表示するデータの形式やフォントサイズなどはfmtannot_kwsで設定できる。

一部のセルだけにデータを表示

ax.text()の繰り返し処理によって、一部のセルにのみデータを表示することもできる。

セル間の線幅の設定

linewidthsによってセルの間に線を表示して、各セルを際立たせることができる。

セル間の線色の設定

デフォルトの線色は白となっている。

カラーバーの表示/非表示

cbar=Falseによってカラーバーを非表示にすることができる。

カラーバーを上下に表示

cbar_kws={ “location”:”bottom”}で下にカラーバーが表示され、cbar_kws={ “location”:”top”}で上に表示される。

正方形なヒートマップにする

square =Trueでヒートマップが正方形となる。

ラベルの設定

xticklabels=Falseでx軸のラベルが非表示となり、yticklabels =2のようにすることで目盛りが2つおきに表示される。

マスク処理

maskでbool配列を設定するとTrueの部分がマスクされ、マスク部分は空白のセルとなる。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

seaborn.heatmap — seaborn 0.11.2 documentation
numpy.histogram2d — NumPy v1.21 Manual
Creating annotated heatmaps — Matplotlib 3.4.3 documentation

コメント