Matplotlib - 带颜色条的多个子图的紧密布局

Eul*_*ter 0 python matplotlib

我在一行中有一系列子图,所有子图共享相同的颜色条,我想使用plt.tight_layout().

然而,当天真地使用时,颜色条会把一切搞乱。幸运的是,我在 matplotlib 文档中找到了这一点,但它仅适用于一个子图。

最小工作示例

我尝试使其适应多个子图,但分配颜色条的子图最终变得更小。

import matplotlib.pyplot as plt 
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np

plt.close('all')
arr = np.arange(100).reshape((10, 10))
fig, ax = plt.subplots(ncols=2, figsize=(8, 4))
im0 = ax[0].imshow(arr, interpolation="none")
im1 = ax[1].imshow(arr, interpolation='none')

divider = make_axes_locatable(plt.gca())
cax = divider.append_axes("right", "5%", pad="3%")
plt.colorbar(im0, cax=cax)

plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)

这就是结果的样子。

在此输入图像描述

Jod*_*mak 5

最新的 matplotlib (3.6) 为这种情况提供了一个新选项layout='compressed'

import matplotlib.pyplot as plt
import numpy as np

arr = np.arange(100).reshape((10, 10))
fig, ax = plt.subplots(ncols=2, figsize=(4, 2), layout='compressed')
im0 = ax[0].imshow(arr)
im1 = ax[1].imshow(arr)

plt.colorbar(im0, ax=ax)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述