メインコンテンツへスキップ

Matplotlibのオブジェクト指向なカラーバーの表示

·744 文字·2 分
目次

はじめに
#

matplotlibライブラリで作成したヒートマップや等高線図のカラーバーを、オブジェクト指向スタイルで調整する。 オブジェクト指向によるグラフの描画は、複数のグラフをプロットしたときに、どのグラフの描画を調整しているか分かりやすいという利点がある。

環境
#

ソフトウェア バージョン
Spyder 3.3.6
Python 3.7.4
matplotlib 3.1.1

本記事では、各ライブラリを以下のようにインポートしていることを前提とする。

import numpy as np
import matplotlib.pyplot as plt

カラーバーの表示
#

等高線図やヒートマップにカラーバーを表示するには、Figureオブジェクトのcolorbarメソッドを用いる。

Figure.colorbar(mappable, ax=None)

主な引数の説明は以下の通り。

mappable: ヒートマップを描画するpcolorや、等高線図を描画するcontourから返されるオブジェクトである。 ax: カラーバーを描画するAxesオブジェクトを指定する(任意)。

ヒートマップの例
#

2つのヒートマップの横に、それぞれカラーバーを表示する。

x = np.arange(0,10)
y = np.arange(0,5)
X, Y = np.meshgrid(x, y)
Z = np.arange(50).reshape(len(y), -1)

fig, ax = plt.subplots(ncols=2)
mappable0 = ax[0].pcolor(X, Y, Z, cmap="Blues")
mappable1 = ax[1].pcolor(X, Y, Z, cmap="Reds")
fig.colorbar(mappable0, ax=ax[0])
fig.colorbar(mappable1, ax=ax[1])
fig.tight_layout() # これが無いと表示が少し崩れる
plt.show()

結果

colorbar_pcolor
colorbar_pcolor

等高線図の例
#

等高線図の横にカラーバーを描画する。

x = np.arange(0, 10, 0.1)
y = np.arange(0, 20, 0.1)
X, Y = np.meshgrid(x, y)
Z = np.cos(X)+np.cos(Y)

fig, ax = plt.subplots()
mappable = ax.contour(X, Y, Z, cmap="Blues")
fig.colorbar(mappable)
plt.show()

結果

colorbar_contour
colorbar_contour

カラーバー中の線の濃さがやや分かりづらいので、プロットされた等高線に数字を表示した方が良いかもしれない。

カラーバーにラベルを追加
#

以下の手順で、カラーバーにラベルを追加できる。

  1. Figureオブジェクトのcolorbarメソッドを実行したときに、戻り値のcolorbarオブジェクトを取得する。
  2. colorbarオブジェクトのset_labelメソッドでラベルを設定する。

x = np.arange(0,10)
y = np.arange(0,5)
X, Y = np.meshgrid(x, y)
Z = np.arange(50).reshape(len(y), -1)

fig, ax = plt.subplots()
mappable = ax.pcolor(X, Y, Z, cmap="Blues")
cbar = fig.colorbar(mappable, ax=ax)
cbar.set_label("Value of Z")
plt.show()

結果

colorbar_label
colorbar_label

参考リンク
#

matplotlib.figure.Figure — Matplotlib 3.3.3 documentation matplotlib.pyplot.colorbar — Matplotlib 3.3.3 documentation

Helve
著者
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

関連記事

Matplotlibでオブジェクト指向なグラフ作成
·1842 文字·4 分
matplotlibライブラリを用いてオブジェクト指向スタイルでグラフを作成する。
Matplotlibのオブジェクト指向な対数軸プロット
·1012 文字·3 分
matplotlibライブラリで作成したグラフの軸を、オブジェクト指向スタイルで対数に変更する。
Matplotlibでオブジェクト指向なグラフの調整
·2791 文字·6 分
matplotlibライブラリで作成したグラフをオブジェクト指向スタイルで調整する。
BeautifulSoupを使ったXMLの解析
·2390 文字·5 分
BeautifulSoupを使ってXMLを解析(parse)する。
NumPyで使える統計の関数
·673 文字·2 分
NumPyで利用できる統計の関数について。
NumPyで使える数学の関数
·1031 文字·3 分
NumPyで利用できる数学の関数について。