代码之家  ›  专栏  ›  技术社区  ›  Sashi

缩放不用于加载pickled matplotlib图形

  •  1
  • Sashi  · 技术社区  · 6 年前

    我想存储一个matplotlib图形,然后加载它以交互方式使用它。更具体地说,我希望能够在这个图中使用缩放。 我正在使用pickle将数字句柄转储到文件中。 我随后使用pickle加载图形,但加载文件后缩放不起作用,即使我可以在拾取图形之前使用zoom。

    这是一个演示我的问题的示例脚本。

    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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Sashi    6 年前

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