Matplotlib

【Python】matplotlibでヒートマップ+カラーバー作成(imshow)

【Python】matplotlibでヒートマップ+カラーバー作成(imshow)

 

 

  • ヒートマップをpythonで図示したい
  • カラーバーもカスタマイズしたい

本記事では、配列を視覚的に図示するヒートマップをPythonのmatplotlibを利用して作成する方法を紹介していきます。

今回は、matplotlibのimshowを使用して簡単にヒートマップを作成していきます!

本記事を読むことで、カラーバーつきの綺麗なヒートマップが作成できること間違いなしです。

*本記事ではmatplotlibを一度は触ったことがあることを前提に記事を作成しています(一度も触ったことがない方は下記を参考にしてください)

 

【15分】Pythonでグラフを作成する方法|matplotlibの基本をマスターPythonでグラフを書くことが難しそうだと思っていませんか?実は、Pythonを使用したグラフ作成は、excelより便利で簡単です。この記事では、初心者でもグラフが書けるように丁寧にpythonのグラフの作成法を説明します。...

 

ヒートマップを作成する準備

 

まずは、ヒートマップを作成するためのライブラリをインポートしましょう。

import numpy as np
import matplotlib.pyplot as plt

 

 

ヒートマップの作成方法

 

ヒートマップをmatplotlibで作成する場合は、Axes.imshow()を使用します。

まずは、引数を簡単にまとめておきます。

引数 説明
cmap カラーマップを指定(後ほど詳しく解説)
norm データを[0, 1]の範囲に正規化
aspect

アスペクト比を設定します

  • 'equal' : マス目が正方形になるように調節
  • 'auto' : Axesオブジェクトに合うように調整
alpha 透明度を0〜1で指定

この段階で引数を完全に覚える必要はありません。

このあと具体例を使って使い方を紹介していきます。

 

基本的なヒートマップを作成

 

まずは、基本的なヒートマップを作成してみます。

具体例を下記で紹介します。

sample = np.random.rand(30, 30)
fig, ax = plt.subplots()
ax.imshow(sample)
plt.show()

 

<output>

基本的なヒートマップ

このように簡単にヒートマップを作成することができます。

 

カラーマップを変更する

 

カラーマップを変更する場合は、imshowの引数『cmap』に具体的なカラーマップを指定します。

カラーマップの一覧は下記からアクセスすることができます。

Choosing Colormaps in Matplotlib

 

今回は具体例として『gnuplot』を使用した具体例を紹介します。

sample = np.random.rand(30, 30)
fig, ax = plt.subplots()
ax.imshow(sample, cmap='gnuplot')
plt.show()

 

<output>

異なるカラーマップを使用

『cmap = ‘gray’』を指定するグレースケールのヒートマップを作成することができます。

 

アスペクト比を調節

 

引数の『aspect』を指定することでアスペクト比を変更することができます。

よく使用するのは以下の二つです。

  1. equal : マス目が正方形になるように調節
  2. auto : axesオブジェクトに合うように調節

 

まずは、『equal』を設定した具体例を紹介します。

sample = np.random.rand(20, 30)
fig, ax = plt.subplots()
ax.imshow(sample, aspect='equal')
plt.show()

 

<output>

アスペクト比を変更

このようにマス目が正方形になるように自動で調節されます。

次に『auto』の具体例を表示します。

sample = np.random.rand(20, 30)
fig, ax = plt.subplots(figsize=(5,5))
im = ax.imshow(sample, aspect='auto')
plt.show()

 

<output>

autoを使用

設定したグラフに自動で合うように調節してくれます。

 

 

カラーバー付きのヒートマップを作成

 

カラーバー付きのヒートマップを作成する場合は、imshowとは別のcolorbarメソッドを使用します。

 

基本的なカラーバー付きのヒートマップ

 

具体例を表示した方が理解しやすいと思うので早速具体例を表示します。

sample = np.random.rand(30, 30)
fig, ax = plt.subplots()
im = ax.imshow(sample)
fig.colorbar(im, ax=ax)
plt.show()

 

<output>

カラーバー付きのヒートマップ

colorbarの引数は以下の二つを設定してください。

  1. plotしたグラフ(im)
  2. ax : プロットしたいaxesオブジェクト

 

横向きのカラーバー付きヒートマップ

 

横付きのカラーバーを使用する場合は、colorbarの引数に『corientation=’horizontal’』を追加してください。

sample = np.random.rand(30, 30)
fig, ax = plt.subplots()
# autoを設定すると綺麗に表示される
im = ax.imshow(sample, aspect='auto')
fig.colorbar(im, ax = ax, orientation='horizontal')
plt.show()

 

<output>

 

複数のヒートマップを表示

 

最後に複数のヒートマップを表示する方法を紹介します。

これも具体例を示した方が早いと思うので早速具体例を示していきます。

sample1 = np.random.rand(30, 30)
sample2 = np.random.rand(30, 30)
sample3 = np.random.rand(30, 30)
sample4 = np.random.rand(30, 30)
fig, axes = plt.subplots(2, 2, constrained_layout=True)
im1 = axes[0,0].imshow(sample1, aspect='auto')
im2 = axes[0,1].imshow(sample2, aspect='auto', cmap='bwr')
im3 = axes[1,0].imshow(sample3, aspect='auto')
im4 = axes[1,1].imshow(sample4, aspect='auto', cmap='gnuplot')
fig.colorbar(im1, ax = axes[0, 1])
fig.colorbar(im4, ax = axes[1, 1])
plt.show()

 

<output>

複数のヒートマップ

ここまで、作成できるようになれば十分ですね!

 

参考資料

 

基本的に参考にした資料は『matplotlib tutorials』です。

 

まとめ

 

今回は、matplotlibを使用しヒートマップを作成する方法を紹介しました。

ヒートマップはデータを理解する際に強力なツールになります。

皆さんも習得して自身の研究や実務に利用してください。

 

Pythonによる可視化方法をもっと学びたい方は下記を参考にしてください。

Python Lab

ABOUT ME
努力のガリレオ
【運営者】 : 東大で理論物理を研究中(経歴)東京大学, TOEIC950点, NASA留学, カナダ滞在経験有り, 最優秀塾講師賞, オンライン英会話講師試験合格, ブログと独自コンテンツで収益6桁達成 【編集者】: イングリッシュアドバイザーとして勤務中(経歴)中学校教諭一種免許取得[英語],カナダ留学経験あり, TOEIC650点
Python学習を効率化させるサービス

 

Pythonを学習するのに効率的なサービスを紹介していきます。

まず最初におすすめするのは、Udemyです。

Udemyは、Pythonに特化した授業がたくさんあり、どの授業も良質です。

また、セール中は1500円定義で利用することができ、コスパも最強です。

下記の記事では、実際に私が15個以上の講義を受講して特におすすめだった講義を紹介しています。

 

【最新】UdemyでおすすめのPythonコース|東大生が厳選!10万を超える講座があるUdemyの中で、Pythonに関係する講座を厳選しました。また、本記事では、Udemyを使用しながらPythonをどのような順番で勉強するべきかを紹介しました。ぜひ参考にしてください。...

 

他のPythonに特化したオンライン・オフラインスクールも下記の記事でまとめています。

 

【最新】Pythonに強いプログラミングスクール7選|東大生が厳選Pythonの流行と共に、Pythonに強いプログラミングスクールが増えてきました。本記事では、特にPythonを効率的に学ぶことができるプログラミングスクールを経験をもとに厳選して、内容を詳しく解説しています。...

 

自分の学習スタイルに合わせて最適なものを選びましょう。