10000 Small cleanups to parasite axes. · matplotlib/matplotlib@f7dd192 · GitHub
[go: up one dir, main page]

Skip to content

Commit f7dd192

Browse files
committed
Small cleanups to parasite axes.
Setting axis zorder in cla() is unnecessary since 51f8468 (zorders are now set in set_axisbelow() instead of draw()). Deprecate the peculiar `update_viewlim` API which is really just an internal helper. No need to explicitly set frameon=False, this is forced by the ParasiteAxesBase constructor. We can factor the various twin axes removers into a single one. (Also, avoiding local functions helps picklability, as usual.) In twin() we can also use viewlim_mode="transform" when the transform is None (IdentityTransform()), because that just means that we apply an additional IdentityTransform() to the viewlims. In parasite_simple2 we don't need to set viewlim_mode, this is already done by `twin`.
1 parent ae47ad2 commit f7dd192

File tree

3 files changed

+29
-47
lines changed

3 files changed

+29
-47
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
``ParasiteAxesAuxTransBase.update_viewlim``
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
... is deprecated; use ``apply_aspect`` instead.

examples/axes_grid1/parasite_simple2.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
aux_trans = mtransforms.Affine2D().scale(pm_to_kms, 1.)
2525
ax_pm = ax_kms.twin(aux_trans)
26-
ax_pm.set_viewlim_mode("transform")
2726

2827
for n, ds, dse, w, we in obs:
2928
time = ((2007 + (10. + 4/30.)/12) - 1988.5)

lib/mpl_toolkits/axes_grid1/parasite_axes.py

Lines changed: 26 additions & 46 deletions
+
self.transAxes, self.transData)
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ class ParasiteAxesBase:
1313
def get_images_artists(self):
1414
artists = {a for a in self.get_children() if a.get_visible()}
1515
images = {a for a in self.images if a.get_visible()}
16-
1716
return list(images), list(artists - images)
1817

1918
def __init__(self, parent_axes, **kwargs):
@@ -23,19 +22,9 @@ def __init__(self, parent_axes, **kwargs):
2322

2423
def cla(self):
2524
super().cla()
26-
2725
martist.setp(self.get_children(), visible=False)
2826
self._get_lines = self._parent_axes._get_lines
2927

30-
# In mpl's Axes, zorders of x- and y-axis are originally set
31-
# within Axes.draw().
32-
if self._axisbelow:
33-
self.xaxis.set_zorder(0.5)
34-
self.yaxis.set_zorder(0.5)
35-
else:
36-
self.xaxis.set_zorder(2.5)
37-
self.yaxis.set_zorder(2.5)
38-
3928
def pick(self, mouseevent):
4029
# This most likely goes to Artist.pick (depending on axes_class given
4130
# to the factory), which only handles pick events registered on the
@@ -74,17 +63,12 @@ def __init__(self, parent_axes, aux_transform, viewlim_mode=None,
7463
super().__init__(parent_axes, **kwargs)
7564

7665
def _set_lim_and_transforms(self):
77-
7866
self.transAxes = self._parent_axes.transAxes
79-
80-
self.transData = \
81-
self.transAux + \
82-
self._parent_axes.transData
83-
67+
self.transData = self.transAux + self._parent_axes.transData
8468
self._xaxis_transform = mtransforms.blended_transform_factory(
85-
self.transData, self.transAxes)
69+
self.transData, self.transAxes)
8670
self._yaxis_transform = mtransforms.blended_transform_factory(
87-
self.transAxes, self.transData)
71
8872

8973
def set_viewlim_mode(self, mode):
9074
_api.check_in_list([None, "equal", "transform"], mode=mode)
@@ -93,7 +77,11 @@ def set_viewlim_mode(self, mode):
9377
def get_viewlim_mode(self):
9478
return self._viewlim_mode
9579

80+
@cbook.deprecated("3.4", alternative="apply_aspect")
9681
def update_viewlim(self):
82+
return self._update_viewlim()
83+
84+
def _update_viewlim(self): # Inline after deprecation elapses.
9785
viewlim = self._parent_axes.viewLim.frozen()
9886
mode = self.get_viewlim_mode()
9987
if mode is None:
@@ -107,7 +95,7 @@ def update_viewlim(self):
10795
_api.check_in_list([None, "equal", "transform"], mode=mode)
10896

10997
def apply_aspect(self, position=None):
110-
self.update_viewlim()
98+
self._update_viewlim()
11199
super().apply_aspect()
112100

113101

@@ -204,9 +192,9 @@ def twinx(self, axes_class=None):
204192

205193
parasite_axes_class = parasite_axes_class_factory(axes_class)
206194

207-
ax2 = parasite_axes_class(self, sharex=self, frameon=False)
195+
ax2 = parasite_axes_class(self, sharex=self)
208196
self.parasites.append(ax2)
209-
ax2._remove_method = self._remove_twinx
197+
ax2._remove_method = self._remove_any_twin
210198

211199
self.axis["right"].set_visible(False)
212200

@@ -215,11 +203,6 @@ def twinx(self, axes_class=None):
215203

216204
return ax2
217205

218-
def _remove_twinx(self, ax):
219-
self.parasites.remove(ax)
220-
self.axis["right"].set_visible(True)
221-
self.axis["right"].toggle(ticklabels=False, label=False)
222-
223206
def twiny(self, axes_class=None):
224207
"""
225208
Create a twin of Axes with a shared y-axis but independent x-axis.
@@ -232,9 +215,9 @@ def twiny(self, axes_class=None):
232215

233216
parasite_axes_class = parasite_axes_class_factory(axes_class)
234217

235-
ax2 = parasite_axes_class(self, sharey=self, frameon=False)
218+
ax2 = parasite_axes_class(self, sharey=self)
236219
self.parasites.append(ax2)
237-
ax2._remove_method = self._remove_twiny
220+
ax2._remove_method = self._remove_any_twin
238221

239222
self.axis["top"].set_visible(False)
240223

@@ -243,11 +226,6 @@ def twiny(self, axes_class=None):
243226

244227
return ax2
245228

246-
def _remove_twiny(self, ax):
247-
self.parasites.remove(ax)
248-
self.axis["top"].set_visible(True)
249-
self.axis["top"].toggle(ticklabels=False, label=False)
250-
251229
def twin(self, aux_trans=None, axes_class=None):
252230
"""
253231
Create a twin of Axes with no shared axis.
@@ -262,27 +240,29 @@ def twin(self, aux_trans=None, axes_class=None):
262240
parasite_axes_auxtrans_class_factory(axes_class)
263241

264242
if aux_trans is None:
265-
ax2 = parasite_axes_auxtrans_class(
266-
self, mtransforms.IdentityTransform(), viewlim_mode="equal")
267-
else:
268-
ax2 = parasite_axes_auxtrans_class(
269-
self, aux_trans, viewlim_mode="transform")
243+
aux_trans = mtransforms.IdentityTransform()
244+
ax2 = parasite_axes_auxtrans_class(
245+
self, aux_trans, viewlim_mode="transform")
270246
self.parasites.append(ax2)
271-
ax2._remove_method = self.parasites.remove
247+
ax2._remove_method = self._remove_any_twin
272248

273249
self.axis["top", "right"].set_visible(False)
274250

275251
ax2.axis["top", "right"].set_visible(True)
276252
ax2.axis["left", "bottom"].set_visible(False)
277253

278-
def _remove_method(h):
279-
self.parasites.remove(h)
280-
self.axis["top", "right"].set_visible(True)
281-
self.axis["top", "right"].toggle(ticklabels=False, label=False)
282-
ax2._remove_method = _remove_method
283-
284254
return ax2
285255

256+
def _remove_any_twin(self, ax):
257+
self.parasites.remove(ax)
258+
restore = ["top", "right"]
259+
if ax._sharex:
260+
restore.remove("top")
261+
if ax._sharey:
262+
restore.remove("right")
263+
self.axis[tuple(restore)].set_visible(True)
264+
self.axis[tuple(restore)].toggle(ticklabels=False, label=False)
265+
286266
def get_tightbbox(self, renderer, call_axes_locator=True,
287267
bbox_extra_artists=None):
288268
bbs = [

0 commit comments

Comments
 (0)
0