如何将Matplotlib绘图存储为变量实现无需重算即可调用展示
Matplotlib多图存储复用方案
核心实现逻辑
直接将绘图生成的Figure、Axes对象赋值给自定义变量存储,只要变量不被释放,画布上的所有绘图数据都会保留,不需要重复计算y值或者重写绘图逻辑。
可直接运行的示例代码
import numpy as np import matplotlib.pyplot as plt # 仅计算一次x、两个y值,不需要重复计算 x = np.arange(0.2, 10, 0.01) y_linear = x + 2 y_square = x ** 2 # 存储第一张图的画布和轴对象 fig1, ax1 = plt.subplots() ax1.plot(x, y_linear) # 存储第二张图的画布和轴对象 fig2, ax2 = plt.subplots() ax2.plot(x, y_square)
后续调用方式
- 显示第一张图:执行
fig1.show() - 显示第二张图:执行
fig2.show() - 可直接对存储的轴对象做二次修改,比如给第一张图加坐标轴标注:
ax1.set_xlabel("x值") ax1.set_ylabel("y值") # 修改后刷新显示即可 fig1.canvas.draw_idle()
原写法问题说明
你之前用plt.figure(序号)的写法,在非交互式运行环境或者画布被关闭后,切换序号时会重建空白画布,原有绘图数据会丢失;存为自定义变量后就不会出现这个问题。
内容的提问来源于stack exchange,提问作者kukelia
相关产品推荐
相关产品推荐

