SiiD BLOG ロゴ

Seabornによるヒートマップ(heatmap)の作り方

Seabornによるヒートマップ(heatmap)の作り方

この記事を書いた人

SiiD BLOG編集部

SiiD BLOG編集部

SiiD BLOG編集部にて、皆さんの学習やキャリアに役立つ記事を発信します! 普段は受講生の皆さん向けに、学習やキャリアの相談にのったりもしています。

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)

このコードを実行すると以下のようなヒートマップが生成されます。

basic seaborn heatmap

セルの値の注釈付け

annot=Trueを指定することで、各セルに数値を注釈として表示できます。これにより、値を一目で確認できるようになります。

sns.heatmap(glue, annot=True)
seaborn heatmap, annot

注釈のフォーマット

fmtパラメータを使用して、注釈の数値フォーマットを制御できます。例えば、fmt=".1f"とすると、小数点以下1桁までの数値が表示されます。

sns.heatmap(glue, annot=True, fmt=".1f")
seaborn heatmap, annot

別のDataFrameを使った注釈

注釈に別のDataFrameを使用して、例えばランキングなど別の情報を表示することもできます。

sns.heatmap(glue, annot=glue.rank(axis="columns"))
seaborn heatmap, another annotation

セル間に線を追加

linewidthsパラメータを使ってセル間に線を追加し、視覚的な分離を強調できます。

sns.heatmap(glue, annot=True, linewidths=.5)
seaborn heamap, line between cells

カラーマップの選択

cmapパラメータを使用して、様々なカラーマップから選択したり、カラーマップオブジェクトを渡してカスタマイズしたりできます。

# 名前で選択
sns.heatmap(glue, cmap="crest")

# カラーマップオブジェクトを使用
sns.heatmap(glue, cmap=sns.cubehelix_palette(as_cmap=True))
seaborn heatmap, color map
名前で選択
seaborn heatmap, color map
カラーマップオブジェクトを使用

カラーマップの範囲の調整

vminとvmaxを設定することで、データ値に対応するカラーマップの最小点と最大点を指定できます。

sns.heatmap(glue, vmin=50, vmax=100)
seaborn heatmap, adjastment of color map

matplotlibの軸オブジェクトを使用したカスタマイズ

sns.heatmapはmatplotlibの軸(Axes)オブジェクトを返すため、これを使用してプロットをさらに微調整することが可能です。

ax = sns.heatmap(glue, annot=True)
ax.set(xlabel="", ylabel="")
ax.xaxis.tick_top()
seaborn heatmap, matplotlib

まとめ

以上の方法で、Seabornのheatmap関数を使って、さまざまなデータの相関やパターンを視覚的に表現するヒートマップを作成することができます。データの分析やプレゼンテーションに役立ててください。

heatmapのようなグラフは、何を見せたいかが決まると設定の選び方も自然に決まってきます。可視化を含めたデータ分析の基礎を順に学べるコースをSiiDでも用意しています。

AIプログラミングスクール「SiiD」について

AIプログラミングスクール「SiiD」は、未経験からITエンジニア転職を目指す方向けのオンラインスクールです。

SiiDの特徴

  • 現役エンジニアでYouTube登録者約13万人の「セイト先生」が代表兼主任講師
  • 採用側の実務知見(2,000人以上の選考・150名以上のエンジニア採用)にもとづく指導
  • 生成AIを取り入れた学習設計と、実務レベルのフルスタックWeb開発スキル
  • Workship CAREER(株式会社GIG)と連携した無料の転職伴走支援
  • 経済産業省認定のReスキル講座で、給付金の条件を満たせば実質105,600円〜
  • 学割あり(35%オフ)

こんな方におすすめ

  • 未経験・文系・社会人からITエンジニア転職を本気で目指したい方
  • 独学に限界を感じている方
  • 費用を抑えながら実務スキルと転職サポートを両立したい方

「未経験だから」とあきらめる必要はありません。採用する側を知り尽くしたプロが、給付金で負担を抑えながら内定まで伴走します。

シェアする

未経験からのエンジニア転職を本気で目指すなら「SiiD」

SiiDはYouTube 13万人のセイト先生が主任講師のAIプログラミングスクール。元人事部長&現役エンジニアによる徹底指導で、生涯年収を大きくアップさせませんか?

SiiDの詳細を見る