@@ -643,12 +643,18 @@ class Ticker:
643
643
"""
644
644
645
645
def __init__ (self ):
646
+ self ._axis = None
646
647
self ._locator = None
647
648
self ._formatter = None
648
649
650
+ # The machinery below allows TickHelpers to be shared over multiple Axis.
651
+
649
652
@property
650
653
def locator (self ):
651
- return self ._locator
654
+ locator = self ._locator
655
+ if locator is not None :
656
+ locator .set_axis (self ._axis )
657
+ return locator
652
658
653
659
@locator .setter
654
660
def locator (self , locator ):
@@ -661,7 +667,10 @@ def locator(self, locator):
661
667
662
668
@property
663
669
def formatter (self ):
664
- return self ._formatter
670
+ formatter = self ._formatter
671
+ if formatter is not None :
672
+ formatter .set_axis (self ._axis )
673
+ return formatter
665
674
666
675
@formatter .setter
667
676
def formatter (self , formatter ):
@@ -672,6 +681,10 @@ def formatter(self, formatter):
672
681
"and support for them will be removed %(removal)s." )
673
682
self ._formatter = formatter
674
683
684
+ @locator .setter
685
+ def locator (self , locator ):
686
+ self ._locator = locator
687
+
675
688
676
689
class _LazyTickList :
677
690
"""
@@ -759,8 +772,8 @@ def __init__(self, axes, pickradius=15):
759
772
self .isDefault_label = True
760
773
761
774
self .axes = axes
762
- self .major = Ticker ()
763
- self .minor = Ticker ()
775
+ self ._major = Ticker ()
776
+ self ._minor = Ticker ()
764
777
self .callbacks = cbook .CallbackRegistry ()
765
778
766
779
self ._autolabelpos = True
@@ -779,6 +792,28 @@ def __init__(self, axes, pickradius=15):
779
792
self .cla ()
780
793
self ._set_scale ('linear' )
781
794
795
+ # The machinery below allows TickHelpers to be shared over multiple Axis.
796
+
797
+ @property
798
+ def major (self ):
799
+ major = self ._major
800
+ major ._axis = self
801
+ return major
802
+
803
+ @major .setter
804
+ def major (self , major ):
805
+ self ._major = major
806
+
807
+ @property
808
+ def minor (self ):
809
+ minor = self ._minor
810
+ minor ._axis = self
811
+ return minor
812
+
813
+ @minor .setter
814
+ def minor (self , minor ):
815
+ self ._minor = minor
816
+
782
817
# During initialization, Axis objects often create ticks that are later
783
818
# unused; this turns out to be a very slow step. Instead, use a custom
784
819
# descriptor to make the tick lists lazy and instantiate them as needed.
0 commit comments