こんにちは。データ可視化には様々な手法がありますが、今回は「ヒートマップ」に注目します。ヒートマップは2次元のデータを色の濃淡で表現するグラフで、データの傾向を視覚的に把握するのに非常に適しています。
本記事では、Pythonでヒートマップを作成する方法について、人気のデータ可視化ライブラリ「seaborn」を使った具体的なコードを交えながら詳しく解説していきます。ヒートマップの基本的な作り方から、カラーマップのカスタマイズ、軸ラベルの調整など、実践的なテクニックまで幅広くカバーします。
データ分析や機械学習に興味がある方、研究やレポートでデータ可視化を行う必要がある方は、ぜひ本記事を参考にしてみてください。魅力的なヒートマップを作成するスキルを身につけることで、データからより多くの洞察を引き出せるようになるはずです。
ヒートマップとは?
ヒートマップは、2次元の数値データを色の濃淡で表現するグラフの一種です。行と列からなる表形式のデータに対して、各セルの値の大きさに応じて色を割り当てることで、データの分布や傾向を視覚的に表現します。
ヒートマップは様々な分野で活用されています。例えば、遺伝子発現量データの可視化、株価の時系列変化の表示、ユーザー行動分析など、行と列からなる2次元データを扱う場面で広く用いられています。
ヒートマップの利点は、大量のデータを一目で把握できる点にあります。数値の大小を色の濃淡で表現することで、データの全体的な傾向やパターンを直感的に理解することができます。また、データ間の関係性や類似性を見出すのにも役立ちます。
Pythonでヒートマップを作成する手順
Pythonでヒートマップを作成するには、以下のような手順で進めます。
- 必要なライブラリをインポートする
- ヒートマップの元となる2次元データを用意する
- seabornの
heatmap()
関数を使ってヒートマップを描画する - 必要に応じてカラーマップや軸ラベルなどを調整する
それでは、実際にコードを見ながら、各ステップを詳しく見ていきましょう。
ステップ1:必要なライブラリをインポート
ヒートマップを作成するには、以下のライブラリが必要です。
- numpy:数値計算ライブラリ
- pandas:データ分析ライブラリ
- matplotlib:グラフ描画ライブラリ
- seaborn:データ可視化ライブラリ
以下のようにインポートします。import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
ステップ2:2次元データの用意
ヒートマップの元となる2次元データを用意します。ここでは、サンプルとしてランダムな値を持つ10×10の2次元配列を作成します。data = np.random.rand(10, 10)
実際のデータ分析では、pandasのDataFrameを使うことが多いでしょう。DataFrameをそのままheatmap()
関数に渡すことができます。
ステップ3:ヒートマップの描画
用意した2次元データをseaborn.heatmap()
関数に渡すことで、ヒートマップを描画します。sns.heatmap(data) plt.show()

これだけで、ヒートマップが表示されます。各セルの値が色の濃淡で表現されています。
ステップ4:ヒートマップのカスタマイズ
seaborn.heatmap()
関数には、ヒートマップの見た目をカスタマイズするためのパラメータがたくさん用意されています。ここではよく使うパラメータをいくつか紹介します。
カラーマップの変更
ヒートマップの配色を変更するには、cmap
パラメータを使います。sns.heatmap(data, cmap='coolwarm')

'coolwarm'
は青から赤へのグラデーションを表すカラーマップです。他にも'viridis'
, 'plasma'
, 'inferno'
など、多数のカラーマップが用意されています。
値の表示
各セルに値を表示するには、annot
パラメータをTrue
に設定します。sns.heatmap(data, annot=True)

表示する値のフォーマットはfmt
パラメータで指定できます。例えば、fmt='.2f'
とすると、小数点以下2桁まで表示されます。
カラースケールの調整
カラースケールの最小値と最大値を指定するには、vmin
とvmax
パラメータを使います。sns.heatmap(data, vmin=0.2, vmax=0.8)

これにより、色の濃淡が0.2から0.8の範囲に収まるように調整されます。
軸ラベルの回転
軸ラベルが長い場合、xticklabels
とyticklabels
パラメータを使って回転させることができます。sns.heatmap(data, xticklabels=1, yticklabels=1)

xticklabels
とyticklabels
に1を指定すると、軸ラベルが縦向きに表示されます。
ヒートマップの活用例
ヒートマップは様々な場面で活用できます。ここではいくつかの具体的な例を紹介します。
相関行列の可視化(python ヒートマップ 散布図)
データ分析では、変数間の関係性を把握することが重要です。相関行列をヒートマップで可視化することで、変数間の相関の強さを一目で把握できます。# サンプルデータの作成 df = pd.DataFrame(np.random.rand(5, 5), columns=list('ABCDE')) # 相関行列の計算 corr = df.corr() # ヒートマップの描画 sns.heatmap(corr, annot=True, cmap='coolwarm', square=True)

このように、相関行列をヒートマップで表現することで、変数間の正の相関や負の相関、相関の強さを視覚的に理解することができます。
1次元データのヒートマップ(python ヒートマップ 1次元)
ヒートマップは2次元データを表現するのが一般的ですが、1次元データに対しても使えます。例えば、時系列データの変化をヒートマップで表現することができます。# サンプルデータの作成 data = np.random.rand(10, 1) # ヒートマップの描画 sns.heatmap(data, cmap='YlGnBu', cbar=False)

このように、1次元データをヒートマップで表現することで、データの時間的な推移を色の変化で表現できます。
画像の重ね合わせ(python ヒートマップ 重ねる, python ヒートマップ 画像)
ヒートマップを画像に重ねて表示することで、画像上の重要な領域を強調することができます。以下は、サンプル画像の上に、ランダムに生成したヒートマップを重ねる例です。# サンプル画像の読み込み img = plt.imread('sample_image.jpg') # ヒートマップ用のデータ作成 data = np.random.rand(img.shape[0], img.shape[1]) # 画像の表示 plt.imshow(img, cmap='gray') # ヒートマップの重ね合わせ sns.heatmap(data, alpha=0.5, cbar=False, cmap='YlOrRd')

alpha
パラメータで透明度を調整することで、画像とヒートマップのバランスを調整できます。
ヒートマップのサイズ調整(python ヒートマップ サイズ)
ヒートマップのサイズを調整するには、figsize
パラメータを使います。plt.figure(figsize=(8, 6)) sns.heatmap(data)

figsize
に指定するタプル(width, height)
の値を変更することで、ヒートマップの幅と高さを調整できます。
まとめ
本記事では、Pythonでヒートマップを作成する方法について、seabornライブラリを使った具体的な手順を紹介しました。ヒートマップは2次元データの視覚化に非常に適したグラフで、データの傾向やパターンを直感的に理解するのに役立ちます。
seabornのheatmap()
関数を使えば、簡単にヒートマップを作成できます。カラーマップの変更、値の表示、軸ラベルの調整など、ヒートマップの見た目をカスタマイズするためのオプションも豊富に用意されています。
また、ヒートマップは相関行列の可視化、1次元データの表現、画像との重ね合わせなど、様々な場面で活用できることを見てきました。データの特性に合わせて、ヒートマップを柔軟に使いこなすことが重要です。
Pythonでのデータ可視化スキルを磨くために、ぜひヒートマップを活用してみてください。魅力的な可視化結果を生み出すことで、データ分析の幅が大きく広がるはずです。
ヒートマップは、一見複雑そうに見えるデータも、視覚的に分かりやすく表現してくれる優れたグラフです。seabornを使えば、誰でも簡単にヒートマップを作成できます。ぜひ色々なデータで試してみてください!
参考リンク
- seaborn.heatmap — seaborn
- seaborn入門 – データの可視化と統計分析
- Pythonでヒートマップ(色付きマス)を作成 – Qiita
- 【コード付き】Pythonのseabornライブラリで作るヒートマップを理解する
これらの記事やドキュメントを参考に、ヒートマップの作成方法をさらに深く理解することをおすすめします。
本記事が、皆さんのPythonでのデータ可視化スキルの向上に役立てば幸いです。