@@ -169,6 +169,20 @@ def apply_tickdir(self, tickdir):
169169 """
170170 pass
171171
172+ def get_tickdir (self ):
173+ return self ._tickdir
174+
175+ def get_tick_padding (self ):
176+ """
177+ Get the length of the tick outside of the axes.
178+ """
179+ padding = {
180+ 'in' : 0.0 ,
181+ 'inout' : 0.5 ,
182+ 'out' : 1.0
183+ }
184+ return self ._size * padding [self ._tickdir ]
185+
172186 def get_children (self ):
173187 children = [self .tick1line , self .tick2line ,
174188 self .gridline , self .label1 , self .label2 ]
@@ -349,13 +363,11 @@ def apply_tickdir(self, tickdir):
349363
350364 if self ._tickdir == 'in' :
351365 self ._tickmarkers = (mlines .TICKUP , mlines .TICKDOWN )
352- self ._pad = self ._base_pad
353366 elif self ._tickdir == 'inout' :
354367 self ._tickmarkers = ('|' , '|' )
355- self ._pad = self ._base_pad + self ._size / 2.
356368 else :
357369 self ._tickmarkers = (mlines .TICKDOWN , mlines .TICKUP )
358- self ._pad = self ._base_pad + self ._size
370+ self ._pad = self ._base_pad + self .get_tick_padding ()
359371 self .stale = True
360372
361373 def _get_text1 (self ):
@@ -485,13 +497,11 @@ def apply_tickdir(self, tickdir):
485497
486498 if self ._tickdir == 'in' :
487499 self ._tickmarkers = (mlines .TICKRIGHT , mlines .TICKLEFT )
488- self ._pad = self ._base_pad
489500 elif self ._tickdir == 'inout' :
490501 self ._tickmarkers = ('_' , '_' )
491- self ._pad = self ._base_pad + self ._size / 2.
492502 else :
493503 self ._tickmarkers = (mlines .TICKLEFT , mlines .TICKRIGHT )
494- self ._pad = self ._base_pad + self ._size
504+ self ._pad = self ._base_pad + self .get_tick_padding ()
495505 self .stale = True
496506
497507 # how far from the y axis line the right of the ticklabel are
@@ -1097,6 +1107,16 @@ def get_tightbbox(self, renderer):
10971107 else :
10981108 return None
10991109
1110+ def get_tick_padding (self ):
1111+ values = []
1112+ if len (self .majorTicks ):
1113+ values .append (self .majorTicks [0 ].get_tick_padding ())
1114+ if len (self .minorTicks ):
1115+ values .append (self .minorTicks [0 ].get_tick_padding ())
1116+ if len (values ):
1117+ return max (values )
1118+ return 0.0
1119+
11001120 @allow_rasterization
11011121 def draw (self , renderer , * args , ** kwargs ):
11021122 'Draw the axis lines, grid lines, tick lines and labels'
0 commit comments