Skip to content

Removing axes created by twiny() leads to an error #18925

Closed
@lars-sowa-snkeos

Description

@lars-sowa-snkeos

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions