我使用python和matplotlib创建了多个数字。 PyQt5用作后端来显示数字。我使用savefig以svg格式保存数据。
我的问题是我想创建一个包含所有svg文件的zip文件。我所拥有的简化版本是:
import matplotlib
figure = matplotlib.figure.Figure(dpi=72)
canvas = matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg(figure)
axes = figure.add_axes((0.1, 0.15, 0.85, 0.8))
axes.plot(data)
# Do all of that three times to give me three separate figures
# (let's call them figure, figure1 and figure2)
现在我可以使用
保存每个数字figure.savefig(filename, format='svg')
figure1.savefig .....
但我真的想要像
这样的东西fileobject = figure.savefig(format='svg')
我可以使用tarfile
模块将所有fileobject
压缩并存储在一个存档中。我目前的解决方法是保存文件,读取它们并使用这些对象创建tar文件并在之后删除原始文件。有更直接的方法来做这件事会很好......
答案 0 :(得分:0)
您可以使用buffered stream将文件保存到。类似的东西:
import io
fileobject1 = io.BytesIO()
figure1.savefig(fileobject1, format='svg')
fileobject2 = io.BytesIO()
figure2.savefig(fileobject2, format='svg')
等