Pickle figures from matplotlib
<p>I am trying to recreate the simple pickle figure example from the question: <a href="https://stackoverflow.com/questions/4348733/saving-interactive-matplotlib-figures">Saving interactive Matplotlib figures</a>,
which is also sourced from <a href="http://fredborg-braedstrup.dk/blog/2014/10/10/saving-mpl-figures-using-pickle/" rel="nofollow noreferrer">Saving Matplotlib Figures Using Pickle</a>. However, when I run the given codes the figures seems to pickle OK, but then I get an error when I try to load the pickled figure. I am running it using Canopy Enthought (v1.6.2.3262), using Matplotlib 1.5.1-1 and Numpy 1.9.2-3 on Python 2.7.3-1.
The pickle code is:`</p>

<pre><code>import numpy as np
import matplotlib.pyplot as plt
import pickle as pl

# Plot simple sinus function
fig_handle = plt.figure()
x = np.linspace(0,2*np.pi)
y = np.sin(x)
plt.plot(x,y)

# Save figure handle to disk
pl.dump(fig_handle,file('sinus.pickle','w'))`
</code></pre>

<p>The code to load the figure is:</p>

<pre><code>import matplotlib.pyplot as plt
import pickle as pl
import numpy as np

# Load figure from disk and display
fig_handle = pl.load(open('sinus.pickle','rb'))
fig_handle.show()
</code></pre>

<p>and the error I get is:</p>

<pre><code>%run "Z:\EFNHigh_Res\show_picklefig.py"
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Z:\EFNHigh_Res\show_picklefig.py in &lt;module&gt;()
      4 
      5 #plot simple sinus function
----&gt; 6 fig_handle = pl.load(open('Z:\EFNHigh_Res\sinus.pickle','rb'))
      7 fig_handle.show()

C:\Users\Tom\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.6.2.3262.win-x86_64\lib\pickle.pyc in load(file)
   1376 
   1377 def load(file):
-&gt; 1378     return Unpickler(file).load()
   1379 
   1380 def loads(str):

C:\Users\Tom\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.6.2.3262.win-x86_64\lib\pickle.pyc in load(self)
    856             while 1:
    857                 key = read(1)
--&gt; 858                 dispatch[key](self)
    859         except _Stop, stopinst:
    860             return stopinst.value

C:\Users\Tom\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.6.2.3262.win-x86_64\lib\pickle.pyc in load_global(self)
   1088         module = self.readline()[:-1]
   1089         name = self.readline()[:-1]
-&gt; 1090         klass = self.find_class(module, name)
   1091         self.append(klass)
   1092     dispatch[GLOBAL] = load_global

C:\Users\Tom\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.6.2.3262.win-x86_64\lib\pickle.pyc in find_class(self, module, name)
   1122     def find_class(self, module, name):
   1123         # Subclasses may override this
-&gt; 1124         __import__(module)
   1125         mod = sys.modules[module]
   1126         klass = getattr(mod, name)

ImportError: No module named copy_reg
</code></pre>

<p>I know that there is a difference between Python 3 and 2, in that file instead of open should be used in the dump (and I presume the pickle load) for Python 2, so I have tried both combinations in the code.</p>

<p>I am unsure what the error is telling me, so I haven't been able to get any further with this, any help on understanding the errors or fixing the problem appreciated.</p>