Matplotlib:跨行共享 ylabels,该行是唯一的

Matplotlib: sharing ylabels across rows that are unique to that row

我正在尝试在子图的行中共享一个 y 标签,该标签对于这些行是唯一的。所有行的 y 标签都不相同。此外,我想要一种通用方法,而不是你为每一行单独标记它的方法:而是存储标签并使用一些循环将它们分配给相关行(或通过更好的方法,我对编码知之甚少)。

下面是我的代码相关部分的概括。这里有 2 行,3 列。理想情况下,“axs”对象数组的维度是事先确定的,并且也有一种通用的方法,但我试图将其集中在固定 y 标签上。我想要跨第 1 行的共享 y 标签“A”和跨第 2 行的共享 y 标签“B”,两者都在左外侧。

import matplotlib.pyplot as plt

x = [0, 1]
y = [0, 1]

fig, axs = plt.subplots(2, 3)

axs[0, 0].plot(x, y, 'b')
axs[0, 1].plot(x, y, 'b')
axs[0, 2].plot(x, y, 'b')
axs[1, 0].plot(x, y, 'r')
axs[1, 1].plot(x, y, 'r')
axs[1, 2].plot(x, y, 'r')

label = ["Row 1", "Row 2"]

for j in range(0, 2):
       axs[j, :].set_ylabel('{}'.format(label[j]))

我收到的以下错误来自以下行:"axs[j, :].set_ylabel('{}'.format(label[j]))": AttributeError: 'numpy.ndarray' 对象没有属性 'set_ylabel'

如果我在某处弄错了变量的维度或类型,我不会感到惊讶。

如果描述不当,我深表歉意,我又不是程序员。如果需要,我会修改问题以使其更清楚。

可能有很多方法可以做到这一点,但我认为我们可以使用 zip 函数设置坐标轴和标签。

for l,ax in zip(label, axs):
    print(ax)
    ax[0].set_ylabel(l)
    #axs[j, :].set_ylabel('{}'.format(label[j]))

[<AxesSubplot:> <AxesSubplot:> <AxesSubplot:>]
[<AxesSubplot:> <AxesSubplot:> <AxesSubplot:>]