@@ -643,12 +643,20 @@ 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
649
+ self ._locator_is_default = True
650
+ self ._formatter_is_default = True
651
+
652
+ # The machinery below allows TickHelpers to be shared over multiple Axis.
648
653
649
654
@property
650
655
def locator (self ):
651
- return self ._locator
656
+ locator = self ._locator
657
+ if locator is not None :
658
+ locator .set_axis (self ._axis )
659
+ return locator
652
660
653
661
@locator .setter
654
662
def locator (self , locator ):
@@ -661,7 +669,10 @@ def locator(self, locator):
661
669
662
670
@property
663
671
def formatter (self ):
664
- return self ._formatter
672
+ formatter = self ._formatter
673
+ if formatter is not None :
674
+ formatter .set_axis (self ._axis )
675
+ return formatter
665
676
666
677
@formatter .setter
667
678
def formatter (self , formatter ):
@@ -672,6 +683,10 @@ def formatter(self, formatter):
672
683
"and support for them will be removed %(removal)s." )
673
684
self ._formatter = formatter
674
685
686
+ @locator .setter
687
+ def locator (self , locator ):
688
+ self ._locator = locator
689
+
675
690
676
691
class _LazyTickList :
677
692
"""
@@ -759,8 +774,8 @@ def __init__(self, axes, pickradius=15):
759
774
self .isDefault_label = True
760
775
761
776
self .axes = axes
762
- self .major = Ticker ()
763
- self .minor = Ticker ()
777
+ self ._major = Ticker ()
778
+ self ._minor = Ticker ()
764
779
self .callbacks = cbook .CallbackRegistry ()
765
780
766
781
self ._autolabelpos = True
@@ -779,6 +794,60 @@ def __init__(self, axes, pickradius=15):
779
794
self .cla ()
780
795
self ._set_scale ('linear' )
781
796
797
+ # The machinery below allows TickHelpers to be shared over multiple Axis.
798
+
799
+ @property
800
+ def major (self ):
801
+ major = self ._major
802
+ major ._axis = self
803
+ return major
804
+
805
+ @major .setter
806
+ def major (self , major ):
807
+ self ._major = major
808
+
809
+ @property
810
+ def minor (self ):
811
+ minor = self ._minor
812
+ minor ._axis = self
813
+ return minor
814
+
815
+ @minor .setter
816
+ def minor (self , minor ):
817
+ self ._minor = minor
818
+
819
+ @property
820
+ def isDefault_majloc (self ):
821
+ return self .major ._locator_is_default
822
+
823
+ @isDefault_majloc .setter
824
+ def isDefault_majloc (self , value ):
825
+ self .major ._locator_is_default = value
826
+
827
+ @property
828
+ def isDefault_majfmt (self ):
829
+ return self .major ._formatter_is_default
830
+
831
+ @isDefault_majfmt .setter
832
+ def isDefault_majfmt (self , value ):
833
+ self .major ._formatter_is_default = value
834
+
835
+ @property
836
+ def isDefault_minloc (self ):
837
+ return self .minor ._locator_is_default
838
+
839
+ @isDefault_minloc .setter
840
+ def isDefault_minloc (self , value ):
841
+ self .minor ._locator_is_default = value
842
+
843
+ @property
844
+ def isDefault_minfmt (self ):
845
+ return self .minor ._formatter_is_default
846
+
847
+ @isDefault_minfmt .setter
848
+ def isDefault_minfmt (self , value ):
849
+ self .minor ._formatter_is_default = value
850
+
782
851
# During initialization, Axis objects often create ticks that are later
783
852
# unused; this turns out to be a very slow step. Instead, use a custom
784
853
# descriptor to make the tick lists lazy and instantiate them as needed.
0 commit comments