Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
Open
Labels
Description
Bug summary
I am trying to remove some artists (RadioButtons
andCheckButtons
) while keeping some others (axes with images), before exporting a figure to disk, and am running into this error:AttributeError: 'NoneType' object has no attribute 'canvas'
as MPL is trying to check if canvas for RadioButton has changed, although that RadioButton should not part of the equation at all as it was removed prior to trying to.savefig()
Code for reproduction
importmatplotlib.pyplotaspltfrommatplotlib.widgetsimportRadioButtonsfig,ax=plt.subplots(1,1)radio=RadioButtons(ax, ['1','2'],0)radio.ax.remove()fig.savefig('~/Downloads/saved_after_artist_remove.png')
Actual outcome
Traceback (most recent call last): File"/Users/Reddy/dev/visualqc/visualqc/tests/artist_remove.py", line 12,in<module> fig.savefig('~/Downloads/saved_after_artist_remove.png') File"/usr/local/lib/python3.11/site-packages/matplotlib/figure.py", line 3343,in savefig self.canvas.print_figure(fname,**kwargs) File"/usr/local/lib/python3.11/site-packages/matplotlib/backend_bases.py", line 2366,in print_figure result = print_method( ^^^^^^^^^^^^^ File"/usr/local/lib/python3.11/site-packages/matplotlib/backend_bases.py", line 2232,in<lambda> print_method = functools.wraps(meth)(lambda*args,**kwargs: meth( ^^^^^ File"/usr/local/lib/python3.11/site-packages/matplotlib/backends/backend_agg.py", line 509,in print_png self._print_pil(filename_or_obj,"png", pil_kwargs, metadata) File"/usr/local/lib/python3.11/site-packages/matplotlib/backends/backend_agg.py", line 457,in _print_pil FigureCanvasAgg.draw(self) File"/usr/local/lib/python3.11/site-packages/matplotlib/backends/backend_agg.py", line 400,in draw self.figure.draw(self.renderer) File"/usr/local/lib/python3.11/site-packages/matplotlib/artist.py", line 95,in draw_wrapper result = draw(artist, renderer,*args,**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File"/usr/local/lib/python3.11/site-packages/matplotlib/artist.py", line 72,in draw_wrapperreturn draw(artist, renderer) ^^^^^^^^^^^^^^^^^^^^^^ File"/usr/local/lib/python3.11/site-packages/matplotlib/figure.py", line 3150,in draw DrawEvent("draw_event", self.canvas,renderer)._process() File"/usr/local/lib/python3.11/site-packages/matplotlib/backend_bases.py", line 1263,in _process self.canvas.callbacks.process(self.name, self) File"/usr/local/lib/python3.11/site-packages/matplotlib/cbook/__init__.py", line 309,in process self.exception_handler(exc) File"/usr/local/lib/python3.11/site-packages/matplotlib/cbook/__init__.py", line 96,in _exception_printer raise exc File"/usr/local/lib/python3.11/site-packages/matplotlib/cbook/__init__.py", line 304,in process func(*args,**kwargs) File"/usr/local/lib/python3.11/site-packages/matplotlib/widgets.py", line 1719,in _clearif self.ignore(event) orself._changed_canvas(): ^^^^^^^^^^^^^^^^^^^^^^ File"/usr/local/lib/python3.11/site-packages/matplotlib/widgets.py", line 107,in _changed_canvasreturn self.canvas is not self.ax.figure.canvas ^^^^^^^^^^^^^^^^^^^^^AttributeError:'NoneType' object has no attribute'canvas'
Expected outcome
smooth export with no error
Additional information
No response
Operating system
macOS 13
Matplotlib Version
3.7.1
Matplotlib Backend
TkAgg
Python version
3.11
Jupyter version
No response
Installation
pip