如何修改Python绘图函数,返回多个matplotlib子图对象支持解构赋值
问题说明
你要实现的需求核心是让绘图函数返回4个可直接解包的子图对象,原有代码存在两个问题:
- 没有定义返回值,调用函数无法获取子图对象
- 循环遍历时用了和外层子图数组相同的变量名
ax,会覆盖存储所有子图的数组变量
修正后的代码
import numpy as np import matplotlib.pyplot as plt def test(): f, ax_arr = plt.subplots(2, 2) x = np.array([1, 2, 3]) y = np.array([1, 2, 3]) # 循环变量用ax,避免覆盖外层的子图数组ax_arr for i, ax in enumerate(ax_arr.flat): ax.plot(x, y) # 将扁平化的子图数组转元组返回,刚好对应4个返回值 return tuple(ax_arr.flat)
调用示例
你原来的写法漏了函数调用的括号,正确用法如下:
ax1, ax2, ax3, ax4 = test()
扩展说明
拿到子图对象后可以直接做后续自定义调整,比如:
# 给第一个子图设置标题 ax1.set_title("子图1") # 给第二个子图设置坐标轴标签 ax2.set_xlabel("x轴") ax2.set_ylabel("y轴") plt.show()
内容的提问来源于stack exchange,提问作者Roger Steinberg
相关产品推荐
相关产品推荐

