Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9ff4d61

Browse files
committed
Allow sharing Locators and Formatters across Axises.
1 parent 9856ec2 commit 9ff4d61

File tree

1 file changed

+39
-4
lines changed

1 file changed

+39
-4
lines changed

lib/matplotlib/axis.py

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -643,12 +643,18 @@ class Ticker:
643643
"""
644644

645645
def __init__(self):
646+
self._axis = None
646647
self._locator = None
647648
self._formatter = None
648649

650+
# The machinery below allows TickHelpers to be shared over multiple Axis.
651+
649652
@property
650653
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
652658

653659
@locator.setter
654660
def locator(self, locator):
@@ -661,7 +667,10 @@ def locator(self, locator):
661667

662668
@property
663669
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
665674

666675
@formatter.setter
667676
def formatter(self, formatter):
@@ -672,6 +681,10 @@ def formatter(self, formatter):
672681
"and support for them will be removed %(removal)s.")
673682
self._formatter = formatter
674683

684+
@locator.setter
685+
def locator(self, locator):
686+
self._locator = locator
687+
675688

676689
class _LazyTickList:
677690
"""
@@ -759,8 +772,8 @@ def __init__(self, axes, pickradius=15):
759772
self.isDefault_label = True
760773

761774
self.axes = axes
762-
self.major = Ticker()
763-
self.minor = Ticker()
775+
self._major = Ticker()
776+
self._minor = Ticker()
764777
self.callbacks = cbook.CallbackRegistry()
765778

766779
self._autolabelpos = True
@@ -779,6 +792,28 @@ def __init__(self, axes, pickradius=15):
779792
self.cla()
780793
self._set_scale('linear')
781794

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+
782817
# During initialization, Axis objects often create ticks that are later
783818
# unused; this turns out to be a very slow step. Instead, use a custom
784819
# descriptor to make the tick lists lazy and instantiate them as needed.

0 commit comments

Comments
 (0)