【问题标题】:Saving file object using matplotlib savefig, creating tar file from multiple svg figures使用 matplotlib savefig 保存文件对象,从多个 svg 图形创建 tar 文件
【发布时间】:2018-11-24 00:05:31
【问题描述】:

我使用 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 模块将所有fileobjects 压缩并存储在一个存档中。我目前的解决方法是保存文件,阅读它们并使用这些对象创建 tar 文件,然后删除原始文件。有一个更直接的方法来做到这一点会很好......

【问题讨论】:

    标签: python matplotlib svg tarfile


    【解决方案1】:

    您可以使用buffered stream 将文件保存到。比如:

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

    等等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多