标记子图#

标记子图相对简单,并且会有所不同,因此 Matplotlib 没有这样做的通用方法。

最简单的是将标签放在轴内。请注意,这里我们使用pyplot.subplot_mosaic, 并使用子图标签作为子图的键,这很方便。但是,相同的方法适用于pyplot.subplots或与您要标记子图的键不同的键。

import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms

fig, axs = plt.subplot_mosaic([['a)', 'c)'], ['b)', 'c)'], ['d)', 'd)']],
                              constrained_layout=True)

for label, ax in axs.items():
    # label physical distance in and down:
    trans = mtransforms.ScaledTranslation(10/72, -5/72, fig.dpi_scale_trans)
    ax.text(0.0, 1.0, label, transform=ax.transAxes + trans,
            fontsize='medium', verticalalignment='top', fontfamily='serif',
            bbox=dict(facecolor='0.7', edgecolor='none', pad=3.0))

plt.show()
标注子图

我们可能更喜欢轴外的标签,但仍然彼此对齐,在这种情况下,我们使用稍微不同的变换:

fig, axs = plt.subplot_mosaic([['a)', 'c)'], ['b)', 'c)'], ['d)', 'd)']],
                              constrained_layout=True)

for label, ax in axs.items():
    # label physical distance to the left and up:
    trans = mtransforms.ScaledTranslation(-20/72, 7/72, fig.dpi_scale_trans)
    ax.text(0.0, 1.0, label, transform=ax.transAxes + trans,
            fontsize='medium', va='bottom', fontfamily='serif')

plt.show()
标注子图

如果我们希望它与标题对齐,请合并到标题中或使用loc关键字参数:

fig, axs = plt.subplot_mosaic([['a)', 'c)'], ['b)', 'c)'], ['d)', 'd)']],
                              constrained_layout=True)

for label, ax in axs.items():
    ax.set_title('Normal Title', fontstyle='italic')
    ax.set_title(label, fontfamily='serif', loc='left', fontsize='medium')

plt.show()
a), 普通标题, c), 普通标题, b), 普通标题, d), 普通标题

脚本总运行时间:(0分1.840秒)

由 Sphinx-Gallery 生成的画廊