Matplotlib

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

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

 

 

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

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

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

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

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

 

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

 

基本的なヒートマップの作成方法(imshow)

 

まずは、基本的なヒートマップの作成方法を紹介していきます。

最初に今回使用するライブラリをインポートしてください。

import numpy as np
import matplotlib.pyplot as plt

 

imshowを使用してみる

 

matplotlibでヒートマップを作成する際は『imshowメソッド』を使用します。

imshowでは二次元配列や画像データを可視化することができます。

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

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 : axに合うように調節

 

まずは、『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 : プロットしたいaxオブジェクト

 

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

 

横付きのカラーバーを使用する場合は、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を使用しヒートマップを作成する方法を紹介しました。

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

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

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