如何优化Matplotlib子图绘制pandas Series的遍历代码?
优化Matplotlib子图与Series的遍历绘制
原代码通过嵌套循环和计数器匹配子图与Series,冗余且可读性弱。可以通过展平axes数组结合并行遍历实现更简洁的写法:
优化后的代码
import matplotlib.pyplot as plt items = [expcat, inccat, expmonth, incmonth] fig, axes = plt.subplots(2, 2) # 将二维axes数组展平为一维,简化遍历逻辑 for idx, (ax, series) in enumerate(zip(axes.flatten(), items), start=1): ax.plot(series.cumsum(), color="red", linestyle="dashed", label=idx) ax.legend() # 可选:显示标签 fig.subplots_adjust(wspace=0, hspace=0) plt.show()
核心改进说明
- 展平axes数组:
axes.flatten()把2×2的二维axes结构转为一维列表,彻底避免嵌套循环。 - 并行遍历配对:用
zip(axes.flatten(), items)直接将子图对象与对应Series绑定遍历,无需手动维护计数器n。 - 直接获取序号:
enumerate(..., start=1)自动生成从1开始的序号,替代原代码中n的作用,用于设置标签。
如果需要确保Series数量与子图数量匹配,可以提前添加断言:assert len(items) == axes.size,避免索引越界问题。
内容的提问来源于stack exchange,提问作者Celepharn
相关产品推荐
相关产品推荐

