Увеличение не работает при загрузке маринованного рисунка matplotlib - PullRequest
0 голосов
/ 06 ноября 2018

Я хочу сохранить рисунок matplotlib и загрузить его позже, чтобы использовать его в интерактивном режиме. Чтобы быть более конкретным, я хочу иметь возможность использовать увеличение на этом рисунке. Я использую рассол, чтобы сбросить дескриптор фигуры в файл. Затем я загружаю фигуру позже, используя функцию pickle, но после загрузки файла масштабирование не работает, хотя я могу использовать масштабирование фигуры перед ее засечкой.

Вот пример сценария, который иллюстрирует мою проблему.

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

# Create Plot Data
x = np.arange(100)

# Create Figure, Axes and plot
fig1,axes1 = plt.subplots()
axes1.plot(x)

# Pickle plot
fileName = os.getcwd() + "/img"\
+ time.asctime(time.localtime()) + ".pickle"
with open(fileName,'wb') as pickle_file:
    pickle.dump(fig1,pickle_file)

plt.show() # ZOOM WORKS HERE
plt.close()

# Load pickled plot 
with open(fileName,'rb') as read_pickle:
    fig_handle = pickle.load(read_pickle)

plt.show() # ZOOM DOES NOT WORK HERE

Увеличение изображения до засолки

Не масштабируемое изображение после засолки

Версия: Python 3.7.0 Matplotlib 3.0.0 Рассол 4,0

Это ограничение по фигуре Pickling matplotlib? Или я могу что-то сделать, чтобы загрузить / выгрузить рисунок масштабируемым образом?

1 Ответ

0 голосов
/ 07 ноября 2018

Как указал @ImportanceOfBeingErnest, я исправил проблему, изменив свои бэкэнды с MacOSX на TkAgg.

Вот что я сделал.

import matplotlib
matplotlib.get_backend() # Get the current backend
'MacOSX'
# Get Location where configuration file was loaded from.
matplotlib.matplotlib_fname()
'/usr/local/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc'
# Edit -> backend:TkAgg
matplotlib.get_backend()
'TkAgg'
...