首页 > 解决方案 > 用于显示一个图形的 Python 子图

问题描述

当我使用子图并尝试使用以下子图仅绘制一个图形时,它会给出错误:

AttributeError:“AxesSubplot”对象没有“平面”属性

fig, ax = plt.subplots(nrows=nrows, ncols=ncols,figsize=figsize)
for i, ax in enumerate(ax.flat):
    ax.plot(X, Y, color='k')

如果我想任意设置子数字的数量,如何解决这个问题?我怎么容易理解ax.flat

标签: pythonmatplotlibipythonspyder

解决方案


恰好有一种情况是代码

fig, ax = plt.subplots(nrows=nrows, ncols=ncols,figsize=figsize)
for i, ax in enumerate(ax.flat):
    ax.plot(X, Y, color='k')

不会按预期工作。这是为了nrows = ncols = 1. 这是因为对于单个行和列,ax是单个子图,而不是多个子图的数组。

为了避免这个问题,并且能够在不知道nrowsncols事先知道的情况下使用相同的代码,请使用该squeeze=False选项。这将确保ax始终是一个数组,因此具有一个.flat属性。为了更好地理解,请勿使用与坐标区本身相同的名称来调用坐标区数组。

fig, axs = plt.subplots(nrows=nrows, ncols=ncols, squeeze=False, figsize=figsize)
for i, ax in enumerate(axs.flat):
    ax.plot(X, Y, color='k')

推荐阅读