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

Skip to content

Commit eff1069

Browse files
committed
fixes a bug that signs are sometime wrong when FormatterDMS is used
1 parent fb11468 commit eff1069

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

lib/mpl_toolkits/axisartist/angle_helper.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def select_step(v1, v2, nv, hour=False, include_last=True):
142142
levs = levs[0] + np.arange(0, nv+1, 1) * step
143143
else:
144144
levs = levs[0] + np.arange(0, nv, 1) * step
145-
145+
146146
n = len(levs)
147147

148148
return np.array(levs), n, factor
@@ -229,25 +229,31 @@ def __call__(self, direction, factor, values):
229229
#ss = [[-1, 1][v>0] for v in values] #not py24 compliant
230230
values = np.asarray(values)
231231
ss = np.where(values>0, 1, -1)
232+
233+
sign_map = {(-1, True):"-"}
234+
signs = [sign_map.get((s, v!=0), "") for s, v in zip(ss, values)]
235+
232236
values = np.abs(values)
237+
233238
if factor == 1:
234239
return ["$%d^{\circ}$" % (s*int(v),) for (s, v) in zip(ss, values)]
235240
elif factor == 60:
236-
return ["$%d^{\circ}\,%02d^{\prime}$" % (s*floor(v/60.), v%60) \
237-
for s, v in zip(ss, values)]
241+
return ["$%s%d^{\circ}\,%02d^{\prime}$" % (s,floor(v/60.), v%60) \
242+
for s, v in zip(signs, values)]
238243
elif factor == 3600:
239244
if ss[-1] == -1:
240245
inverse_order = True
241246
values = values[::-1]
247+
sings = signs[::-1]
242248
else:
243249
inverse_order = False
244250
degree = floor(values[0]/3600.)
245-
hm_fmt = "$%d^{\circ}\,%02d^{\prime}\,"
251+
hm_fmt = "$%s%d^{\circ}\,%02d^{\prime}\,"
246252
s_fmt = "%02d^{\prime\prime}$"
247253
l_hm_old = ""
248254
r = []
249-
for v in values-3600*degree:
250-
l_hm = hm_fmt % (ss[0]*degree, floor(v/60.))
255+
for v, s in zip(values-3600*degree, signs):
256+
l_hm = hm_fmt % (s, degree, floor(v/60.))
251257
l_s = s_fmt % (v%60,)
252258
if l_hm != l_hm_old:
253259
l_hm_old = l_hm
@@ -353,3 +359,7 @@ def _adjust_extremes(self, lon_min, lon_max, lat_min, lat_max):
353359

354360
print select_step(-180, 180, 10, hour=False)
355361
print select_step(-12, 12, 10, hour=True)
362+
363+
fmt = FormatterDMS()
364+
#print fmt("left", 60, [0, -30, -60])
365+
print fmt("left", 3600, [0, -30, -60])

0 commit comments

Comments
 (0)