Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
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
21 changes: 18 additions & 3 deletions lib/cartopy/mpl/gridliner.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# (C) British Crown Copyright 2011 - 2019, Met Office
# (C) British Crown Copyright 2011 - 2020, Met Office
#
# This file is part of cartopy.
#
Expand Down Expand Up @@ -639,8 +639,23 @@ def _segment_angle_to_text_specs(self, angle, lonlat):
else matplotlib.rc_params['xtick.major.pad'])
ypadding = (self.ypadding if self.ypadding is not None
else matplotlib.rc_params['ytick.major.pad'])
dx = ypadding * np.cos(angle * np.pi / 180)
dy = xpadding * np.sin(angle * np.pi / 180)

angle = ((angle+180) % 360 - 180) * np.pi / 180
tangle = np.tan(angle)
cangle = np.arctan2(xpadding, ypadding)
if abs(angle) < cangle: # right
dx = ypadding
dy = dx * tangle
elif abs(angle) > (np.pi - cangle): # left
dx = -ypadding
dy = dx * tangle
elif angle >= cangle: # top
dy = xpadding
dx = dy / tangle
else: # bottom
dy = -xpadding
dx = dy / tangle

transform = mtrans.offset_copy(
self.axes.transData, self.axes.figure,
x=dx, y=dy, units='dots')
Expand Down
2 changes: 1 addition & 1 deletion lib/cartopy/tests/mpl/test_gridliner.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# (C) British Crown Copyright 2011 - 2019, Met Office
# (C) British Crown Copyright 2011 - 2020, Met Office
#
# This file is part of cartopy.
#
Expand Down