From 90c30a0a677d0d924159b23407e9693df575996c Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Mon, 5 Mar 2018 13:00:55 -0800 Subject: [PATCH] Improve lazy-ticks realization. --- lib/matplotlib/axis.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index 5163c7833f26..ddc373d50dae 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -677,11 +677,20 @@ def __get__(self, instance, cls): if instance is None: return self else: + # instance._get_tick() can itself try to access the majorTicks + # attribute (e.g. in certain projection classes which override + # e.g. get_xaxis_text1_transform). In order to avoid infinite + # recursion, first set the majorTicks on the instance to an empty + # list, then create the tick and append it. if self._major: - instance.majorTicks = [instance._get_tick(major=True)] + instance.majorTicks = [] + tick = instance._get_tick(major=True) + instance.majorTicks.append(tick) return instance.majorTicks else: - instance.minorTicks = [instance._get_tick(major=False)] + instance.minorTicks = [] + tick = instance._get_tick(major=False) + instance.minorTicks.append(tick) return instance.minorTicks