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

Polar tick fixes #9881

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Dec 1, 2017
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Add better text anchors for default polar radial ticks.
  • Loading branch information
QuLogic committed Nov 29, 2017
commit 4341f00e9fe96216959feabaf0f59ed17f9499ca
62 changes: 52 additions & 10 deletions 62 lib/matplotlib/projections/polar.py
Original file line number Diff line number Diff line change
Expand Up @@ -505,17 +505,59 @@ def _get_text2(self):
t.set_rotation_mode('anchor')
return t

def _determine_anchor(self, angle, start):
if start:
if -90 <= angle <= 90:
return 'left', 'center'
def _determine_anchor(self, mode, angle, start):
# Note: angle is the (spine angle - 90) because it's used for the tick
# & text setup, so all numbers below are -90 from (normed) spine angle.
if mode == 'auto':
if start:
if -90 <= angle <= 90:
return 'left', 'center'
else:
return 'right', 'center'
else:
return 'right', 'center'
if -90 <= angle <= 90:
return 'right', 'center'
else:
return 'left', 'center'
else:
if -90 <= angle <= 90:
return 'right', 'center'
if start:
if angle < -68.5:
return 'center', 'top'
elif angle < -23.5:
return 'left', 'top'
elif angle < 22.5:
return 'left', 'center'
elif angle < 67.5:
return 'left', 'bottom'
elif angle < 112.5:
return 'center', 'bottom'
elif angle < 157.5:
return 'right', 'bottom'
elif angle < 202.5:
return 'right', 'center'
elif angle < 247.5:
return 'right', 'top'
else:
return 'center', 'top'
else:
return 'left', 'center'
if angle < -68.5:
return 'center', 'bottom'
elif angle < -23.5:
return 'right', 'bottom'
elif angle < 22.5:
return 'right', 'center'
elif angle < 67.5:
return 'right', 'top'
elif angle < 112.5:
return 'center', 'top'
elif angle < 157.5:
return 'left', 'top'
elif angle < 202.5:
return 'left', 'center'
elif angle < 247.5:
return 'left', 'bottom'
else:
return 'center', 'bottom'

def update_position(self, loc):
super(RadialTick, self).update_position(loc)
Expand Down Expand Up @@ -559,7 +601,7 @@ def update_position(self, loc):
ha = 'left'
va = 'bottom'
else:
ha, va = self._determine_anchor(angle, direction > 0)
ha, va = self._determine_anchor(mode, angle, direction > 0)
self.label1.set_ha(ha)
self.label1.set_va(va)
self.label1.set_rotation(text_angle)
Expand Down Expand Up @@ -603,7 +645,7 @@ def update_position(self, loc):
else:
text_angle = user_angle
if self.label2On:
ha, va = self._determine_anchor(angle, direction < 0)
ha, va = self._determine_anchor(mode, angle, direction < 0)
self.label2.set_ha(ha)
self.label2.set_va(va)
self.label2.set_rotation(text_angle)
Expand Down
Morty Proxy This is a proxified and sanitized view of the page, visit original site.