Сохранение файлового объекта с помощью matplotlib savefig, создание tar-файла из нескольких рисунков SVG

1

Я создал несколько фигур, используя python с matplotlib. PyQt5 используется в качестве backend для отображения фигур. Я сохраняю цифры в формате svg с помощью savefig.

Моя проблема в том, что я хотел бы создать один zip файл, содержащий все файлы svg. Упрощенная версия того, что у меня есть:

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 call them figure, figure1 and figure2)

Теперь я могу сохранить каждую фигуру, используя

figure.savefig(filename, format='svg')
figure1.savefig .....

Но я действительно хотел бы иметь что-то вроде

fileobject = figure.savefig(format='svg')

где я мог бы использовать tarfile модуль для сжатия и хранения всего fileobject в одном архиве. Моим текущим обходным решением является сохранение файлов, их чтение и использование этих объектов для создания файла tar и последующего удаления оригиналов. Имея более прямой способ сделать это, было бы хорошо...

Теги:
matplotlib
svg
tarfile

1 ответ

0
Лучший ответ

вы можете использовать буферный поток для сохранения вашего файла. Что-то вроде:

import io

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

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

и т.п.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню