gpt4 book ai didi

python - 在 Matplotlib 中循环创建子图?

转载 作者:太空狗 更新时间:2023-10-30 02:21:00 24 4
gpt4 key购买 nike

我正在使用这段代码,它一个接一个地提供漂亮的图(使用 IPython-notebook 和 Pandas)

for subsm in subsl:
H7, subsm = sumsubdesc2(table, subsm)
ax1=H7.plot()
plt.title('Rolling 4q mean %s'%(subsm))
ax1.set_title('Rolling 4q mean %s'%(subsm))
ax1.set_ylim(100000,600000)

我想让图“2up”一个挨着一个,总共 3 行(5 个子图)无法弄清楚如何处理,因为所有子图示例似乎都是用于对数据进行子图或具体地 block 和具体网格布置。

所以我不知道如何创建主图,然后再绘制多个图(在本例中为 5 个),标题为两个图?

编辑代码的第二行,因为我省略了函数调用;-(

最佳答案

这是您需要做的:

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) 也会起作用,因为 StopIteration 在最短的可迭代对象用完时引发。请注意,axs.flatrow-order 扁平化 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)

那个切片看起来有点粗糙,所以我会解释一下:

数组 axsaxs.size 元素。 axs 的扁平化版本的最后一个元素的索引是 axs.size - 1subsllen(subsl) 元素,同样的推理适用于最后一个元素的索引。但是,我们需要从 axs 的最后一个元素返回到最后一个 plotted 元素,因此我们需要按 -1 步进。

关于python - 在 Matplotlib 中循环创建子图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18901571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com