使用matplotlib savefig保存文件对象,从多个svg图形创建tar文件。

4
我使用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 文件,然后再删除原始文件。如果有更直接的方法就好了...

1个回答

3

您可以使用缓冲流将文件保存。类似这样:

import io

fileobject1 = io.BytesIO()
figure1.savefig(fileobject1, format='svg')

fileobject2 = io.BytesIO()
figure2.savefig(fileobject2, format='svg')

等等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接