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

Skip to content

Commit 43f8a74

Browse files
committed
add AxisArtist.invert_ticklabel_direction and fix axis label padding in axes_grid
svn path=/trunk/matplotlib/; revision=8167
1 parent 2f7148f commit 43f8a74

2 files changed

Lines changed: 52 additions & 8 deletions

File tree

lib/mpl_toolkits/axes_grid/axis_artist.py

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

lib/mpl_toolkits/axes_grid/axislines.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -336,10 +336,15 @@ def get_axislabel_pos_angle(self, axes):
336336
get_label_transform() returns a transform of (transAxes+offset)
337337
"""
338338
loc = self._axis_direction
339-
angle = dict(left=0,
340-
right=0,
341-
bottom=.5*np.pi,
342-
top=.5*np.pi)[loc]
339+
#angle = dict(left=0,
340+
# right=0,
341+
# bottom=.5*np.pi,
342+
# top=.5*np.pi)[loc]
343+
344+
if self.nth_coord == 0:
345+
angle = 0
346+
else:
347+
angle = 90
343348

344349
_verts = [0.5, 0.5]
345350

@@ -369,6 +374,11 @@ def get_tick_iterators(self, axes):
369374
else:
370375
angle_normal, angle_tangent = 0, 90
371376

377+
if self.nth_coord == 0:
378+
angle_normal, angle_tangent = 90, 0
379+
else:
380+
angle_normal, angle_tangent = 0, 90
381+
372382
#angle = 90 - 90 * self.nth_coord
373383

374384
major = self.axis.major

0 commit comments

Comments
 (0)