我想存储一个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图的限制吗?还是我可以做些什么来以可缩放的方式加载/转储图形?
答案 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'