如何将timeseries-generator生成的图表保存为PNG等图片文件
解决timeseries-generator生成图表的保存问题
问题原因
timeseries-generator的Generator类本身没有savefig方法,直接调用g.savefig()必然报错。g.plot()底层依赖matplotlib绘图,它会返回matplotlib的Figure对象,我们需要通过这个对象执行保存操作。
你尝试的另一篇帖子方法是针对Python内置的生成器迭代器,和这里的timeseries_generator.generator.Generator类完全不是同一概念,因此不适用。
修正后的代码
import random import pandas as pd from pathlib import Path from timeseries_generator import Generator, LinearTrend, WhiteNoise i = range(0,4) # first number inclusive, second exclusive outpath = "PATH" # 替换为你的实际路径 for element in i: c = random.random() o = random.random() s = random.random() lt = LinearTrend(coef=c, offset=o, col_name=f"plot no. {element}") g = Generator(factors={lt}, features=None, date_range=pd.date_range(start="01-01-2020", end="12-31-2020")) wn = WhiteNoise(stdev_factor=s) g.update_factor(wn) g.generate() # 获取绘图返回的matplotlib Figure对象 fig = g.plot() # 用Figure对象的savefig方法保存图片 fig.savefig(Path(outpath) / f"graph_{element}.png") # 可选:关闭figure释放内存 import matplotlib.pyplot as plt plt.close(fig)
关键说明
g.plot()会返回matplotlib的Figure实例,该实例自带savefig方法,这才是正确的保存入口- 使用
Path拼接路径比path.join更简洁(若习惯用os.path,保留原写法也可) - 循环中频繁绘图建议手动关闭figure,避免内存泄漏
内容的提问来源于stack exchange,提问作者aibe0815
相关产品推荐
相关产品推荐

