Подтвердить что ты не робот

Хранить и перезагружать объект matplotlib.pyplot

Я работаю в psudo-операционной среде, где мы делаем новые снимки при получении данных. Иногда, когда появляются новые данные, нам нужно повторно открыть изображение и обновить это изображение, чтобы создавать композиты, добавлять наложения и т.д. В дополнение к добавлению к изображению это требует изменения названий, легенд и т.д.

Есть ли что-то встроенное в matplotlib, которое позволит мне хранить и перезагружать мой объект matplotlib.pyplot для последующего использования? Ему нужно будет поддерживать доступ ко всем связанным объектам, включая фигуры, строки, легенды и т.д. Возможно, маринование - это то, что я ищу, но я в этом сомневаюсь.

4b9b3361

Ответ 1

По сравнению с 1.2 матплотлибом с экспериментальной поддержкой травления. Если у вас возникнут какие-либо проблемы, сообщите нам об этом в списке рассылки mpl или, открыв проблему на github.com/matplotlib/matplotlib

НТН

EDIT: добавлен простой пример

import matplotlib.pyplot as plt
import numpy as np
import pickle

ax = plt.subplot(111)
x = np.linspace(0, 10)
y = np.exp(x)
plt.plot(x, y)
pickle.dump(ax, file('myplot.pickle', 'w'))

Затем в отдельном сеансе:

import matplotlib.pyplot as plt
import pickle

ax = pickle.load(file('myplot.pickle'))
plt.show()

Ответ 2

Небольшая модификация ответа Pelson для людей, работающих на Jupyterhub

Используйте %matplotlib notebook перед загрузкой рассола. Использование %matplotlib inline не работало для меня ни в jupyterhub, ни в jupyter notebook. и дает трассировку, заканчивающуюся AttributeError: объект 'module' не имеет атрибута 'new_figure_manager_given_figure'.

import matplotlib.pyplot as plt
import numpy as np
import pickle

%matplotlib notebook

ax = plt.subplot(111)
x = np.linspace(0, 10)
y = np.exp(x)
plt.plot(x, y)
with open('myplot.pkl','wb') as fid:
    pickle.dump(ax, fid)

Затем в отдельном сеансе:

import matplotlib.pyplot as plt
import pickle

%matplotlib notebook

with open('myplot.pkl','rb') as fid:
    ax = pickle.load(fid)
plt.show()

Ответ 3

Я привел цифры для ряда статей с использованием matplotlib. Вместо того, чтобы думать о сохранении фигуры (как в MATLAB), я бы написал script, который построил данные, затем отформатировал и сохранил фигуру. В тех случаях, когда я хотел сохранить локальную копию данных (особенно если бы я хотел снова сыграть с ней), я обнаружил numpy.savez() и numpy.load(), чтобы быть очень полезным.

Сначала я пропустил сжатое ощущение сохранения фигуры в MATLAB, но через некоторое время я предпочел этот подход, потому что он включает данные в формате, который доступен для дальнейшего анализа.

Ответ 4

Вы попробовали модуль рассола? Он сериализует объект, выгружает его в файл и может перезагрузить его из файла позже.