物理の駅 by onsanai

Physics Station → PhSt 質問・疑問・間違いの指摘は、コメントに書くか、直接伝えるときっと良いことがあります。主にWindows or Ubuntu用の記事です

matplotlibのsubplotsで共通のカラーバーを表示する

qiita.com

これの丸コピだが、一応。

import matplotlib.pyplot as plt
import numpy as np

def f(x, y):
    return np.exp(-(x * x) / (2 * 3 ** 2)) * np.exp(-(y * y) / (2 * 3 ** 2))

X, Y = np.mgrid[0:21:1.0, 0:21:1.0]

X-=10.0
Y-=10.0
Y*=2.0

Z = f(X,Y)

fig, axes = plt.subplots(figsize=(10,10),ncols=2,nrows=2,)
im = axes[0,0].pcolormesh(X, Y, Z, cmap='inferno',vmin=0,vmax=1.1)
axes[0,0].set_xlabel("X")
axes[0,0].set_ylabel("Y")

axpos = axes[0,0].get_position()
cbar_ax = fig.add_axes([0.87, axpos.y0, 0.02, axpos.height])
cbar = fig.colorbar(im,cax=cbar_ax)
cbar.set_label("Z")

im = axes[0,1].pcolormesh(X, Y, Z*0.8, cmap='inferno',vmin=0,vmax=1.1)
axes[0,1].set_xlabel("X")
axes[0,1].set_ylabel("Y")

im = axes[1,0].pcolormesh(X, Y, Z*0.6, cmap='inferno',vmin=0,vmax=1.1)
axes[1,0].set_xlabel("X")
axes[1,0].set_ylabel("Y")

im = axes[1,1].pcolormesh(X, Y, Z*0.4, cmap='inferno',vmin=0,vmax=1.1)
axes[1,1].set_xlabel("X")
axes[1,1].set_ylabel("Y")

plt.subplots_adjust(right=0.85)
plt.subplots_adjust(wspace=0.15)
plt.show()

f:id:onsanai:20190920144841p:plain