diff --git a/lib/matplotlib/figure.py b/lib/matplotlib/figure.py index 59731b4552c5..be08bb36d85e 100644 --- a/lib/matplotlib/figure.py +++ b/lib/matplotlib/figure.py @@ -1999,7 +1999,7 @@ def __setstate__(self, state): # re-initialise some of the unstored state information self._axobservers = [] - self.canvas = None + FigureCanvasBase(self) # Set self.canvas. self._layoutbox = None if restore_to_pylab: diff --git a/lib/matplotlib/tests/test_pickle.py b/lib/matplotlib/tests/test_pickle.py index 17687092416e..0fad3cdf2e7b 100644 --- a/lib/matplotlib/tests/test_pickle.py +++ b/lib/matplotlib/tests/test_pickle.py @@ -10,6 +10,7 @@ from matplotlib.dates import rrulewrapper import matplotlib.pyplot as plt import matplotlib.transforms as mtransforms +import matplotlib.figure as mfigure def test_simple(): @@ -194,3 +195,13 @@ def test_shared(): @pytest.mark.parametrize("cmap", cm.cmap_d.values()) def test_cmap(cmap): pickle.dumps(cmap) + + +def test_unpickle_canvas(): + fig = mfigure.Figure() + assert fig.canvas is not None + out = BytesIO() + pickle.dump(fig, out) + out.seek(0) + fig2 = pickle.load(out) + assert fig2.canvas is not None