From 4c8782af627f02b4f8ffad9385aad61b7632116f Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Mon, 21 Nov 2022 13:23:11 +0100 Subject: [PATCH] Transform ParasiteAxesBase._update_viewlim into standard callback. update_viewlim as an independent method was deprecated in da2f77a and has since then been removed. We could just inline _update_viewlim into apply_aspect, but transforming it into a callback on xlim_changed/ylim_changed helps moving towards the removal of ParasiteAxes as a separate class and its replacement by standard (child) axes with some extra attributes/callbacks set. --- .../api_changes_3.6.0/removals.rst | 2 +- lib/mpl_toolkits/axes_grid1/parasite_axes.py | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/doc/api/prev_api_changes/api_changes_3.6.0/removals.rst b/doc/api/prev_api_changes/api_changes_3.6.0/removals.rst index 01a61bf4cf38..b261fdb30596 100644 --- a/doc/api/prev_api_changes/api_changes_3.6.0/removals.rst +++ b/doc/api/prev_api_changes/api_changes_3.6.0/removals.rst @@ -152,7 +152,7 @@ The following class methods have been removed: ``RendererAgg.tostring_rgba_minimized()`` - ``NavigationToolbar2Wx.get_canvas()`` -- ``ParasiteAxesBase.update_viewlim()``; use `.ParasiteAxesBase.apply_aspect` +- ``ParasiteAxesBase.update_viewlim()``; use ``ParasiteAxesBase.apply_aspect`` instead. - ``Subplot.get_geometry()``; use ``SubplotBase.get_subplotspec`` instead. - ``Subplot.change_geometry()``; use ``SubplotBase.set_subplotspec`` instead. diff --git a/lib/mpl_toolkits/axes_grid1/parasite_axes.py b/lib/mpl_toolkits/axes_grid1/parasite_axes.py index b37dcfc888fd..767d0789c24d 100644 --- a/lib/mpl_toolkits/axes_grid1/parasite_axes.py +++ b/lib/mpl_toolkits/axes_grid1/parasite_axes.py @@ -19,6 +19,10 @@ def clear(self): super().clear() martist.setp(self.get_children(), visible=False) self._get_lines = self._parent_axes._get_lines + self._parent_axes.callbacks._connect_picklable( + "xlim_changed", self._sync_lims) + self._parent_axes.callbacks._connect_picklable( + "ylim_changed", self._sync_lims) def pick(self, mouseevent): # This most likely goes to Artist.pick (depending on axes_class given @@ -52,23 +56,18 @@ def set_viewlim_mode(self, mode): def get_viewlim_mode(self): return self._viewlim_mode - def _update_viewlim(self): # Inline after deprecation elapses. - viewlim = self._parent_axes.viewLim.frozen() + def _sync_lims(self, parent): + viewlim = parent.viewLim.frozen() mode = self.get_viewlim_mode() if mode is None: pass elif mode == "equal": - self.axes.viewLim.set(viewlim) + self.viewLim.set(viewlim) elif mode == "transform": - self.axes.viewLim.set( - viewlim.transformed(self.transAux.inverted())) + self.viewLim.set(viewlim.transformed(self.transAux.inverted())) else: _api.check_in_list([None, "equal", "transform"], mode=mode) - def apply_aspect(self, position=None): - self._update_viewlim() - super().apply_aspect() - # end of aux_transform support @@ -140,9 +139,9 @@ def draw(self, renderer): self._children = self._children[:orig_children_len] def clear(self): + super().clear() for ax in self.parasites: ax.clear() - super().clear() def pick(self, mouseevent): super().pick(mouseevent)