@@ -389,6 +389,13 @@ def _set_offset_radius(self, offset_radius):
389389 def _get_offset_radius (self ):
390390 return self ._offset_radius
391391
392+
393+ _get_opposite_direction = {"left" :"right" ,
394+ "right" :"left" ,
395+ "top" :"bottom" ,
396+ "bottom" :"top" }.__getitem__
397+
398+
392399 def _update (self , renderer ):
393400 pass
394401
@@ -665,6 +672,11 @@ def set_axis_direction(self, label_direction):
665672 self .set_default_alignment (label_direction )
666673 self .set_default_angle (label_direction )
667674
675+
676+ def invert_axis_direction (self ):
677+ label_direction = self ._get_opposite_direction (self ._axis_direction )
678+ self .set_axis_direction (label_direction )
679+
668680 def _get_ticklabels_offsets (self , renderer , label_direction ):
669681 """
670682 Calculates the offsets of the ticklabels from the tick and
@@ -1021,6 +1033,15 @@ def set_ticklabel_direction(self, tick_direction):
10211033 else :
10221034 self ._ticklabel_add_angle = 0
10231035
1036+ def invert_ticklabel_direction (self ):
1037+ self ._ticklabel_add_angle = (self ._ticklabel_add_angle + 180 ) % 360
1038+ self .major_ticklabels .invert_axis_direction ()
1039+ self .minor_ticklabels .invert_axis_direction ()
1040+
1041+ # def invert_ticks_direction(self):
1042+ # self.major_ticks.set_tick_out(not self.major_ticks.get_tick_out())
1043+ # self.minor_ticks.set_tick_out(not self.minor_ticks.get_tick_out())
1044+
10241045 def set_axislabel_direction (self , label_direction ):
10251046 """
10261047 Adjust the direction of the axislabel.
@@ -1190,9 +1211,10 @@ def _draw_ticks(self, renderer):
11901211 # set extra pad for major and minor ticklabels:
11911212 # use ticksize of majorticks even for minor ticks. not clear what is best.
11921213
1214+ dpi_cor = renderer .points_to_pixels (1. )
11931215 if self .major_ticks .get_visible () and self .major_ticks .get_tick_out ():
1194- self .major_ticklabels ._set_external_pad (self .major_ticks ._ticksize )
1195- self .minor_ticklabels ._set_external_pad (self .major_ticks ._ticksize )
1216+ self .major_ticklabels ._set_external_pad (self .major_ticks ._ticksize * dpi_cor )
1217+ self .minor_ticklabels ._set_external_pad (self .major_ticks ._ticksize * dpi_cor )
11961218 else :
11971219 self .major_ticklabels ._set_external_pad (0 )
11981220 self .minor_ticklabels ._set_external_pad (0 )
@@ -1301,8 +1323,19 @@ def _draw_label(self, renderer):
13011323
13021324 #pad_points = self.major_tick_pad
13031325
1304- axislabel_pad = max ([self .major_ticklabels ._axislabel_pad ,
1305- self .minor_ticklabels ._axislabel_pad ])
1326+ #print self._ticklabel_add_angle - self._axislabel_add_angle
1327+ #if abs(self._ticklabel_add_angle - self._axislabel_add_angle)%360 > 90:
1328+ if self ._ticklabel_add_angle != self ._axislabel_add_angle :
1329+ if (self .major_ticks .get_visible () and not self .major_ticks .get_tick_out ()) \
1330+ or \
1331+ (self .minor_ticks .get_visible () and not self .major_ticks .get_tick_out ()):
1332+ axislabel_pad = self .major_ticks ._ticksize
1333+ else :
1334+ axislabel_pad = 0
1335+ else :
1336+ axislabel_pad = max ([self .major_ticklabels ._axislabel_pad ,
1337+ self .minor_ticklabels ._axislabel_pad ])
1338+
13061339
13071340 #label_offset = axislabel_pad + self.LABELPAD
13081341
@@ -1341,6 +1374,7 @@ def draw(self, renderer):
13411374
13421375
13431376 self ._draw_line (renderer )
1377+
13441378 self ._draw_ticks (renderer )
13451379
13461380 #self._draw_offsetText(renderer)
0 commit comments