Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 432d9d8

Browse filesBrowse files
committed
Merge pull request #2549 from joferkington/add-rlabel-position
Add methods to control theta position of r-ticklabels on polar plots
2 parents 5b082a5 + d3be7d9 commit 432d9d8
Copy full SHA for 432d9d8

File tree

Expand file treeCollapse file tree

6 files changed

+1310
-11
lines changed
Filter options
Expand file treeCollapse file tree

6 files changed

+1310
-11
lines changed

‎CHANGELOG

Copy file name to clipboardExpand all lines: CHANGELOG
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
2013-10-27 Added get_rlabel_position and set_rlabel_position methods to
2+
PolarAxes to control angular position of radial tick labels.
3+
14
2013-10-06 Add stride-based functions to mlab for easy creation of 2D arrays
25
with less memory.
36

‎lib/matplotlib/projections/polar.py

Copy file name to clipboardExpand all lines: lib/matplotlib/projections/polar.py
+29-11Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ def __init__(self, *args, **kwargs):
234234
self.resolution = kwargs.pop('resolution', 1)
235235
self._default_theta_offset = kwargs.pop('theta_offset', 0)
236236
self._default_theta_direction = kwargs.pop('theta_direction', 1)
237+
self._default_rlabel_position = kwargs.pop('rlabel_position', 22.5)
237238

238239
if self.resolution not in (None, 1):
239240
warnings.warn(
@@ -324,7 +325,7 @@ def _set_lim_and_transforms(self):
324325
self.transData)
325326
# The r-axis labels are put at an angle and padded in the r-direction
326327
self._r_label_position = ScaledTranslation(
327-
22.5, 0.0, Affine2D())
328+
self._default_rlabel_position, 0.0, Affine2D())
328329
self._yaxis_text_transform = (
329330
self._r_label_position +
330331
Affine2D().scale(1.0 / 360.0, 1.0) +
@@ -346,7 +347,7 @@ def get_yaxis_transform(self,which='grid'):
346347
return self._yaxis_transform
347348

348349
def get_yaxis_text1_transform(self, pad):
349-
angle = self._r_label_position.to_values()[4]
350+
angle = self.get_rlabel_position()
350351
if angle < 90.:
351352
return self._yaxis_text_transform, 'bottom', 'left'
352353
elif angle < 180.:
@@ -357,7 +358,7 @@ def get_yaxis_text1_transform(self, pad):
357358
return self._yaxis_text_transform, 'top', 'left'
358359

359360
def get_yaxis_text2_transform(self, pad):
360-
angle = self._r_label_position.to_values()[4]
361+
angle = self.get_rlabel_position()
361362
if angle < 90.:
362363
return self._yaxis_text_transform, 'top', 'right'
363364
elif angle < 180.:
@@ -454,6 +455,26 @@ def set_rlim(self, *args, **kwargs):
454455
kwargs['ymax'] = kwargs.pop('rmax')
455456
return self.set_ylim(*args, **kwargs)
456457

458+
def get_rlabel_position(self):
459+
"""
460+
Returns
461+
-------
462+
float
463+
The theta position of the radius labels in degrees.
464+
"""
465+
return self._r_label_position.to_values()[4]
466+
467+
def set_rlabel_position(self, value):
468+
"""Updates the theta position of the radius labels.
469+
470+
Parameters
471+
----------
472+
value : number
473+
The angular position of the radius labels in degrees.
474+
"""
475+
self._r_label_position._t = (value, 0.0)
476+
self._r_label_position.invalidate()
477+
457478
def set_yscale(self, *args, **kwargs):
458479
Axes.set_yscale(self, *args, **kwargs)
459480
self.yaxis.set_major_locator(
@@ -543,9 +564,8 @@ def set_rgrids(self, radii, labels=None, angle=None, fmt=None,
543564
elif fmt is not None:
544565
self.yaxis.set_major_formatter(FormatStrFormatter(fmt))
545566
if angle is None:
546-
angle = self._r_label_position.to_values()[4]
547-
self._r_label_position._t = (angle, 0.0)
548-
self._r_label_position.invalidate()
567+
angle = self.get_rlabel_position()
568+
self.set_rlabel_position(angle)
549569
for t in self.yaxis.get_ticklabels():
550570
t.update(kwargs)
551571
return self.yaxis.get_gridlines(), self.yaxis.get_ticklabels()
@@ -597,7 +617,7 @@ def can_pan(self) :
597617
return True
598618

599619
def start_pan(self, x, y, button):
600-
angle = np.deg2rad(self._r_label_position.to_values()[4])
620+
angle = np.deg2rad(self.get_rlabel_position())
601621
mode = ''
602622
if button == 1:
603623
epsilon = np.pi / 45.0
@@ -611,7 +631,7 @@ def start_pan(self, x, y, button):
611631
rmax = self.get_rmax(),
612632
trans = self.transData.frozen(),
613633
trans_inverse = self.transData.inverted().frozen(),
614-
r_label_angle = self._r_label_position.to_values()[4],
634+
r_label_angle = self.get_rlabel_position(),
615635
x = x,
616636
y = y,
617637
mode = mode
@@ -635,9 +655,7 @@ def drag_pan(self, button, key, x, y):
635655
else:
636656
dt = dt0 * -1.0
637657
dt = (dt / np.pi) * 180.0
638-
639-
self._r_label_position._t = (p.r_label_angle - dt, 0.0)
640-
self._r_label_position.invalidate()
658+
self.set_rlabel_position(p.r_label_angle - dt)
641659

642660
trans, vert1, horiz1 = self.get_yaxis_text1_transform(0.0)
643661
trans, vert2, horiz2 = self.get_yaxis_text2_transform(0.0)
Binary file not shown.
Loading

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.