Skip to content

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

@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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions