Closed
Description
Bug report
Bug summary
Removing axes created with twiny() leads to an error. I have found a very similar bug to my issue here: #14911. Interestingly enough this works with twinx(). The code in the original bug report also works in my installation.
Code for reproduction
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax_twin = ax.twiny()
ax_twin.remove()
plt.show()
Actual outcome
Exception in Tkinter callback
Traceback (most recent call last):
File "c:\programdata\miniconda3\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "c:\programdata\miniconda3\lib\tkinter\__init__.py", line 804, in callit
func(*args)
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\backends\_backend_tk.py", line 253, in idle_draw
self.draw()
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 9, in draw
super(FigureCanvasTkAgg, self).draw()
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\backends\backend_agg.py", line 407, in draw
self.figure.draw(self.renderer)
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\artist.py", line 41, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\figure.py", line 1863, in draw
mimage._draw_list_compositing_images(
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\image.py", line 131, in _draw_list_compositing_images
a.draw(renderer)
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\artist.py", line 41, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\cbook\deprecation.py", line 411, in wrapper
return func(*inner_args, **inner_kwargs)
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\axes\_base.py", line 2707, in draw
self._update_title_position(renderer)
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\axes\_base.py", line 2638, in _update_title_position
bb = ax.xaxis.get_tightbbox(renderer)
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\axis.py", line 1109, in get_tightbbox
ticks_to_draw = self._update_ticks()
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\axis.py", line 1021, in _update_ticks
major_locs = self.get_majorticklocs()
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\axis.py", line 1283, in get_majorticklocs
return self.major.locator()
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\ticker.py", line 2276, in __call__
return self.tick_values(vmin, vmax)
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\ticker.py", line 2284, in tick_values
locs = self._raw_ticks(vmin, vmax)
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\ticker.py", line 2223, in _raw_ticks
nbins = np.clip(self.axis.get_tick_space(),
File "c:\programdata\miniconda3\lib\site-packages\matplotlib\axis.py", line 2243, in get_tick_space
length = ((ends[1][0] - ends[0][0]) / self.axes.figure.dpi) * 72
AttributeError: 'NoneType' object has no attribute 'dpi'
Expected outcome
A plot with the twiny axes removed
Matplotlib version
- Operating system: Windows 10
- Matplotlib version: 3.3.2
- Matplotlib backend (
print(matplotlib.get_backend())
): TkAgg - Python version: 3.8.3
Python is from miniconda, all packages installed via pip.