问题
在Matplotlib中,如何使多个子图(subplot)共用一个colorbar?
代码
import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np
dataset1 = np.random.randint(0, 50, size=(10, 10))
dataset2 = np.random.randint(50, 100, size=(10, 10))
vmin = min(np.min(dataset1), np.min(dataset2))
vmax = max(np.max(dataset1), np.max(dataset2))
norm = colors.Normalize(vmin=vmin, vmax=vmax)
fig = plt.figure()
ax = fig.add_subplot(121)
bx = fig.add_subplot(122)
a = ax.pcolormesh(dataset1, norm=norm, cmap=plt.get_cmap('rainbow'))
b = bx.pcolormesh(dataset2, norm=norm, cmap=plt.get_cmap('rainbow'))
fig.colorbar(a, ax=[ax, bx], shrink=0.5)
# fig.colorbar(a, ax=ax, shrink=0.5)
# fig.colorbar(b, ax=bx, shrink=0.5)
plt.show()
效果
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9UERaZXOHJWaWdFZzpkMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyMTMwAjNwkTMzITMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)