@@ -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