缩放不适用于加载腌制的matplotlib图

时间:2018-11-06 18:27:49

标签: matplotlib pickle

我想存储一个matplotlib图形并稍后加载以交互使用它。更具体地说,我希望能够在此图中使用缩放。 我正在使用pickle将图形句柄转储到文件中。 然后,我稍后使用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

Zooming into the image before Pickle

Non-Zoomable image after Pickle

版本: 的Python 3.7.0 Matplotlib 3.0.0 泡菜4.0

这是酸洗matplotlib图的限制吗?还是我可以做些什么来以可缩放的方式加载/转储图形?

1 个答案:

答案 0 :(得分:0)

正如@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'