5
5
6
6
A = np .array
7
7
8
- from grid_finder import ExtremeFinderSimple
8
+ from mpl_toolkits . axisartist . grid_finder import ExtremeFinderSimple
9
9
10
10
def select_step_degree (dv ):
11
11
@@ -80,9 +80,6 @@ def select_step_sub(dv):
80
80
81
81
# subarcsec or degree
82
82
tmp = 10. ** (int (math .log10 (dv ))- 1. )
83
- dv2 = dv / tmp
84
- substep_limits_ = [1.5 , 3. , 7. ]
85
- substep_steps_ = [1. , 2. , 5. ]
86
83
87
84
factor = 1. / tmp
88
85
@@ -99,13 +96,11 @@ def select_step_sub(dv):
99
96
return step , factor
100
97
101
98
102
- def select_step (v1 , v2 , nv , hour = False ):
99
+ def select_step (v1 , v2 , nv , hour = False , include_last = True ):
103
100
104
101
if v1 > v2 :
105
102
v1 , v2 = v2 , v1
106
103
107
- A = np .array
108
-
109
104
dv = float (v2 - v1 ) / nv
110
105
111
106
if hour :
@@ -141,38 +136,45 @@ def select_step(v1, v2, nv, hour=False):
141
136
# we need to check the range of values
142
137
# for example, -90 to 90, 0 to 360,
143
138
144
-
145
139
if factor == 1. and (levs [- 1 ] >= levs [0 ]+ cycle ): # check for cycle
146
140
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
+
148
146
n = len (levs )
149
147
150
148
return np .array (levs ), n , factor
151
149
152
150
153
- def select_step24 (v1 , v2 , nv ):
151
+ def select_step24 (v1 , v2 , nv , include_last = True ):
154
152
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 )
156
155
return levs * 15. , n , factor
157
156
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 )
160
160
161
161
162
162
163
163
164
164
class LocatorHMS (object ):
165
- def __init__ (self , den ):
165
+ def __init__ (self , den , include_last = True ):
166
166
self .den = den
167
+ self ._include_last = include_last
167
168
def __call__ (self , v1 , v2 ):
168
- return select_step24 (v1 , v2 , self .den )
169
+ return select_step24 (v1 , v2 , self .den , self . _include_last )
169
170
170
171
171
172
class LocatorDMS (object ):
172
- def __init__ (self , den ):
173
+ def __init__ (self , den , include_last = True ):
173
174
self .den = den
175
+ self ._include_last = include_last
174
176
def __call__ (self , v1 , v2 ):
175
- return select_step360 (v1 , v2 , self .den )
177
+ return select_step360 (v1 , v2 , self .den , self . _include_last )
176
178
177
179
178
180
class FormatterHMS (object ):
@@ -181,11 +183,12 @@ def __call__(self, direction, factor, values): # hour
181
183
return []
182
184
#ss = [[-1, 1][v>0] for v in values] #not py24 compliant
183
185
values = np .asarray (values )
184
- ss = np .where (values > 0 , 1 , - 1 )
186
+ ss = np .where (values >= 0 , 1 , - 1 )
185
187
values = np .abs (values )/ 15.
186
188
187
189
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 )]
189
192
elif factor == 60 :
190
193
return ["$%d^{\mathrm{h}}\,%02d^{\mathrm{m}}$" % (s * floor (v / 60. ), v % 60 ) \
191
194
for s , v in zip (ss , values )]
@@ -347,3 +350,6 @@ def _adjust_extremes(self, lon_min, lon_max, lat_min, lat_max):
347
350
print select_step360 (20 + 21.2 / 60. , 21 + 33.3 / 60. , 5 )
348
351
print select_step360 (20.5 + 21.2 / 3600. , 20.5 + 33.3 / 3600. , 5 )
349
352
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