【问题标题】:How to iterate axes in matplotlib subplots如何在 matplotlib 子图中迭代轴
【发布时间】:2020-04-17 05:04:18
【问题描述】:

我正在尝试使用 matplotlib 为 5x2 子图添加标题,我编写的代码如下:

fig, axs = plt.subplots(5, 2, figsize=(2*len(cols)+1, 2*len(rows)+1))
for i, ax in axs.flat:

    # print(sum_cols_level[i]) 
      ax.set_title(cols_level[i])

当我运行这个得到这个错误

TypeError: 无法解压不可迭代的 AxesSubplot 对象

cols_level 是一个包含数字列表的列表 [1,2,3,4.. 等]

我也试过了

for i, ax in enumerate(axs.flat):

并得到这个错误;

IndexError: 索引 9 超出轴 0 的范围,大小为 9

我真的很感激有人能解释 ax 的工作原理以及为什么会出现这些错误!

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    正确的解决方案实际上取决于cols_level 是什么。尽管如此,问题似乎是您正在尝试解压缩 1D numpy flatiter,因为它是 2D。忘记使用enumerate

    fig, axs = plt.subplots(2, 2, figsize=(6,8))
    cols_level = [f'ax_{i}' for i in range(len(axs.flat))]
    for i, ax in enumerate(axs.flat):
          ax.set_title(cols_level[i])
    

    【讨论】:

    • 谢谢!如您所见,我也尝试过for i, ax in enumerate(axs.flat):,但仍然出现同样的错误。
    • 列表cols_level 似乎只包含9 个元素而不是10 个。这可能吗?
    猜你喜欢
    • 2019-04-30
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2019-05-27
    相关资源
    最近更新 更多