Seabornのheatmap関数を使用して、色エンコードされたマトリックスとして矩形データをプロットする方法について解説します。heatmap関数はデータを色で表現したヒートマップを作成するために使われ、データのパターンや相関を視覚的に理解しやすくします。
基本的な使用方法
以下のようなシンプルなコードで、簡単なヒートマップを作成することができます。
import seaborn as sns
# データセットの読み込み
data = # 2Dデータセット(例えば、PandasのDataFrame)
# ヒートマップの描画
sns.heatmap(data)seabornに渡すパラメータ
いくつかのパラメータを指定することで、ヒートマップの見た目を調整することができます。
data: 矩形データセット。ndarrayに変換できる2Dデータセットで、Pandas DataFrameが提供された場合は、インデックス/カラム情報がラベルに使用されます。vmin,vmax: カラーマップをアンカーする値。指定されていない場合は、データと他のキーワード引数から推測されます。cmap: データ値から色空間へのマッピング。指定されていない場合は、centerが設定されているかどうかによってデフォルトが変わります。center: 発散データをプロットする際にカラーマップを中心に設定する値。このパラメータを使用すると、指定されていない場合のデフォルトのcmapが変更されます。robust:Trueの場合、vminまたはvmaxがないときに、極端な値ではなく頑健な分位数でカラーマップの範囲が計算されます。annot:Trueの場合、各セルにデータ値を記述します。データと同じ形状の配列のようなものであれば、データの代わりにこれを使用してヒートマップに注釈を付けます。fmt: 注釈を追加する際に使用する文字列フォーマットコード。cbar: カラーバーを描画するかどうか。
よく使われるものを例示しましたが、このほかのパラメータも設定可能です。詳しくはこちらの公式ページを参考にしてください。
heatmap作成のチュートリアル
それでは、具体的にいくつかの例を通してヒートマップを作成してみましょう。
基本的なヒートマップの作成
まず、Seabornが提供するload_dataset関数でデータセットをロードし、pivotメソッドを使用してDataFrameを再構成します。これにより、数字データの部分のみが読み込まれるようになります。この例ではglueデータセットを使用し、モデルごとのタスクスコアをヒートマップにします。
import seaborn as sns
# データセットのロードとピボット
glue = sns.load_dataset("glue").pivot(index="Model", columns="Task", values="Score")
# ヒートマップの作成
sns.heatmap(glue)このコードを実行すると以下のようなヒートマップが生成されます。

セルの値の注釈付け
annot=Trueを指定することで、各セルに数値を注釈として表示できます。これにより、値を一目で確認できるようになります。
sns.heatmap(glue, annot=True)
注釈のフォーマット
fmtパラメータを使用して、注釈の数値フォーマットを制御できます。例えば、fmt=".1f"とすると、小数点以下1桁までの数値が表示されます。
sns.heatmap(glue, annot=True, fmt=".1f")
別のDataFrameを使った注釈
注釈に別のDataFrameを使用して、例えばランキングなど別の情報を表示することもできます。
sns.heatmap(glue, annot=glue.rank(axis="columns"))
セル間に線を追加
linewidthsパラメータを使ってセル間に線を追加し、視覚的な分離を強調できます。
sns.heatmap(glue, annot=True, linewidths=.5)
カラーマップの選択
cmapパラメータを使用して、様々なカラーマップから選択したり、カラーマップオブジェクトを渡してカスタマイズしたりできます。
# 名前で選択
sns.heatmap(glue, cmap="crest")
# カラーマップオブジェクトを使用
sns.heatmap(glue, cmap=sns.cubehelix_palette(as_cmap=True))
<figcaption>名前で選択</figcaption>
<figcaption>カラーマップオブジェクトを使用</figcaption>カラーマップの範囲の調整
vminとvmaxを設定することで、データ値に対応するカラーマップの最小点と最大点を指定できます。
sns.heatmap(glue, vmin=50, vmax=100)
matplotlibの軸オブジェクトを使用したカスタマイズ
sns.heatmapはmatplotlibの軸(Axes)オブジェクトを返すため、これを使用してプロットをさらに微調整することが可能です。
ax = sns.heatmap(glue, annot=True)
ax.set(xlabel="", ylabel="")
ax.xaxis.tick_top()
まとめ
以上の方法で、Seabornのheatmap関数を使って、さまざまなデータの相関やパターンを視覚的に表現するヒートマップを作成することができます。データの分析やプレゼンテーションに役立ててください。
もし、
「プログラミングを体系的に学びたい」
「エンジニア転職を頑張りたい」
「独学に限界を感じてきた...」
「コミュニティで仲間と共に学びたい」
などと感じられたら、ぜひ検討してみてください。
まずは様子見...という方は、公式LINEにぜひご登録下さい。
学習や転職ノウハウに関する豪華特典11個を無料配布しています!
LINE紹介ページで特典を確認する


