在较新的matplotlib版本(自3.4.0起),您可以使用字符串数组来设计子图模式(行和列),并通过调用matplotlib.pyplot.subplot_mosaic来创建图形。
不再使用cfig, ax = plt.subplots(3,2)
,而是使用cfig, axs = plt.subplot_mosaic(mosaic)
,并以以下方式定义mosaic
:
mosaic = [['a', 'b'],
['c', 'd'],
['e', '.']]
在这个模式中,空白的子图用
'.'
表示(默认情况下,可以在调用中进行参数化)。您不需要删除空白的子图,因为它们甚至都没有被创建。
要选择一个轴进行绘图,只需使用
axs[id]
,其中
id
是用于标识马赛克数组中的子图的字符串。
示例:
mosaic = [['b', 'a'], ['.', 'au']]
kw = dict(layout='constrained')
fig, axs = plt.subplot_mosaic(mosaic, **kw)
ax = axs['b']
ax.grid(axis='y')
ax.bar(n, d)
ax = axs['a']
ax.grid(axis='y')
ax.bar(n, prior)
[...]
![enter image description here](https://istack.dev59.com/nDVWj.webp)
使用
subplot_mosaic
,不仅可以引入空的子图,还可以合并“单元格”以创建多行和/或多列的子图,只需构建所需的镶嵌数组,其余代码保持不变。此外,
mosaic
不需要是一个数组,它也可以是一个多行字符串。例如,从
复杂和语义化的图形组合中使用:
"""
A.C
BBB
.D.
"""
结果如下:
![enter image description here](https://istack.dev59.com/NaY58.webp)
add_subplot()
的混乱。 - moooeeeep