这是你需要做的:
import math
import matplotlib.pylab as plt
nrows = int(math.ceil(len(subsl) / 2.))
fig, axs = plt.subplots(nrows, 2)
ylim = 100000, 600000
for ax, subsm in zip(axs.flat, subsl):
H7, subsm = sumsubdesc2(table, subsm)
H7.plot(ax=ax, title='Rolling 4q mean %s' % subsm)
ax.set_ylim(ylim)
即使axs.size>这也会有效. len(subsl),因为当最短的iterable耗尽时会引发StopIteration.请注意,axs.flat是行级平整axs数组的迭代器.
要隐藏未显示的最后一个绘图,请执行以下操作:
axs.flat[-1].set_visible(False)
更一般地说,对于axs.size – 网格末尾的len(subsl)额外图表:
for ax in axs.flat[axs.size - 1:len(subsl) - 1:-1]:
ax.set_visible(False)
那片看起来有点粗糙,所以我会解释一下:
阵列轴具有axs.size元素.平展版本的axs的最后一个元素的索引是axs.size – 1. subsl具有len(subsl)元素,并且相同的推理适用于最后一个元素的索引.但是,我们需要从轴的最后一个元素移回到最后一个绘制的元素,因此我们需要逐步减去-1.