Gam*_*amp 0 python matplotlib ipython spyder
当我使用子图并尝试使用以下子图仅绘制一个图时,它将给出错误:
AttributeError:“AxesSubplot”对象没有属性“flat”
fig, ax = plt.subplots(nrows=nrows, ncols=ncols,figsize=figsize)
for i, ax in enumerate(ax.flat):
ax.plot(X, Y, color='k')
Run Code Online (Sandbox Code Playgroud)
如果我想任意设置子图的个数,如何解决这个问题?如何简单理解ax.flat?
恰好有一种情况,代码
fig, ax = plt.subplots(nrows=nrows, ncols=ncols,figsize=figsize)
for i, ax in enumerate(ax.flat):
ax.plot(X, Y, color='k')
Run Code Online (Sandbox Code Playgroud)
不会按预期工作。这是为了nrows = ncols = 1. 这是因为对于单个行和列来说,ax是单个子图,而不是多个子图的数组。
要避免此问题,并能够在事先不知情的情况下使用相同的代码nrows,ncols请使用该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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5011 次 |
| 最近记录: |