10000 fix some axisartist.angle_helper bugs · matplotlib/matplotlib@58ce33a · GitHub
[go: up one dir, main page]

Skip to content

Commit 58ce33a

Browse files
committed
fix some axisartist.angle_helper bugs
1 parent d4b22ff commit 58ce33a

File tree

1 file changed

+25
-19
lines changed

1 file changed

+25
-19
lines changed

lib/mpl_toolkits/axisartist/angle_helper.py

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
A = np.array
77

8-
from grid_finder import ExtremeFinderSimple
8+
from mpl_toolkits.axisartist.grid_finder import ExtremeFinderSimple
99

1010
def select_step_degree(dv):
1111

@@ -80,9 +80,6 @@ def select_step_sub(dv):
8080

8181
# subarcsec or degree
8282
tmp = 10.**(int(math.log10(dv))-1.)
83-
dv2 = dv/tmp
84-
substep_limits_ = [1.5, 3., 7.]
85-
substep_steps_ = [1. , 2., 5.]
8683

8784
factor = 1./tmp
8885

@@ -99,13 +96,11 @@ def select_step_sub(dv):
9996
return step, factor
10097

10198

102-
def select_step(v1, v2, nv, hour=False):
99+
def select_step(v1, v2, nv, hour=False, include_last=True):
103100

104101
if v1 > v2:
105102
v1, v2 = v2, v1
106103

107-
A = np.array
108-
109104
dv = float(v2 - v1) / nv
110105

111106
if hour:
@@ -141,38 +136,45 @@ def select_step(v1, v2, nv, hour=False):
141136
# we need to check the range of values
142137
# for example, -90 to 90, 0 to 360,
143138

144-
145139
if factor == 1. and (levs[-1] >= levs[0]+cycle): # check for cycle
146140
nv = int(cycle / step)
147-
levs = np.arange(0, nv, 1) * step
141+
if include_last:
142+
levs = levs[0] + np.arange(0, nv+1, 1) * step
143+
else:
144+
levs = levs[0] + np.arange(0, nv, 1) * step
145+
148146
n = len(levs)
149147

150148
return np.array(levs), n, factor
151149

152150

153-
def select_step24(v1, v2, nv):
151+
def select_step24(v1, v2, nv, include_last=True):
154152
v1, v2 = v1/15., v2/15.
155-
levs, n, factor = select_step(v1, v2, nv, hour=True)
153+
levs, n, factor = select_step(v1, v2, nv, hour=True,
154+
include_last=include_last)
156155
return levs*15., n, factor
157156

158-
def select_step360(v1, v2, nv):
159-
return select_step(v1, v2, nv, hour=False)
157+
def select_step360(v1, v2, nv, include_last=True):
158+
return select_step(v1, v2, nv, hour=False,
159+
include_last=include_last)
160160

161161

162162

163163

164164
class LocatorHMS(object):
165-
def __init__(self, den):
165+
def __init__(self, den, include_last=True):
166166
self.den = den
167+
self._include_last = include_last
167168
def __call__(self, v1, v2):
168-
return select_step24(v1, v2, self.den)
169+
return select_step24(v1, v2, self.den, self._include_last)
169170

170171

171172
class LocatorDMS(object):
172-
def __init__(self, den):
173+
def __init__(self, den, include_last=True):
173174
self.den = den
175+
self._include_last = include_last
174176
def __call__(self, v1, v2):
175-
return select_step360(v1, v2, self.den)
177+
return select_step360(v1, v2, self.den, self._include_last)
176178

177179

178180
class FormatterHMS(object):
@@ -181,11 +183,12 @@ def __call__(self, direction, factor, values): # hour
181183
return []
182184
#ss = [[-1, 1][v>0] for v in values] #not py24 compliant
183185
values = np.asarray(values)
184-
ss = np.where(values>0, 1, -1)
186+
ss = np.where(values>=0, 1, -1)
185187
values = np.abs(values)/15.
186188

187189
if factor == 1:
188-
return ["$%d^{\mathrm{h}}$" % (int(v),) for v in values]
190+
return ["$%s%d^{\mathrm{h}}$" % ({1:"",-1:"-"}[s], int(v),) \
191+
for s, v in zip(ss, values)]
189192
elif factor == 60:
190193
return ["$%d^{\mathrm{h}}\,%02d^{\mathrm{m}}$" % (s*floor(v/60.), v%60) \
191194
for s, v in zip(ss, values)]
@@ -347,3 +350,6 @@ def _adjust_extremes(self, lon_min, lon_max, lat_min, lat_max):
347350
print select_step360(20+21.2/60., 21+33.3/60., 5)
348351
print select_step360(20.5+21.2/3600., 20.5+33.3/3600., 5)
349352
print select_step360(20+21.2/60., 20+53.3/60., 5)
353+
354+
print select_step(-180, 180, 10, hour=False)
355+
print select_step(-12, 12, 10, hour=True)

0 commit comments

Comments
 (0)
0