88License: MIT
99"""
1010
11- import numpy
11+ import numpy as np
12+ from matplotlib import pyplot
1213
13- try :
14- import pylab
15- from matplotlib import pyplot
16- mpl_present = True
17- except ImportError :
18- mpl_present = False
14+ # try:
15+ # import pylab
16+ # from matplotlib import pyplot
17+ # mpl_present = True
18+ # except ImportError:
19+ # mpl_present = False
1920
2021CHART_X_BAR_R_X = "x_bar R - X"
2122CHART_X_BAR_R_R = "x_bar R - R"
@@ -104,7 +105,7 @@ def test_violating_runs(data, center, lcl, ucl):
104105
105106def get_stats_x_mr_x (data , size ):
106107 assert size == 1
107- center = numpy .mean (data )
108+ center = np .mean (data )
108109 sd = 0
109110 for i in xrange (len (data )- 1 ):
110111 sd += abs (data [i ] - data [i + 1 ])
@@ -139,7 +140,7 @@ def get_stats_x_bar_r_x(data, size):
139140 r_sum += max (xset ) - min (xset )
140141 r_bar = r_sum / len (data )
141142
142- x_bar = numpy .mean (data )
143+ x_bar = np .mean (data )
143144
144145 center = x_bar
145146 lcl = center - A2 [n ]* r_bar
@@ -169,8 +170,8 @@ def get_stats_x_bar_s_x(data, size):
169170 assert n >= 2
170171 assert n <= 10
171172
172- s_bar = numpy .mean (numpy .std (data , 1 , ddof = 1 ))
173- x_bar = numpy .mean (data )
173+ s_bar = np .mean (np .std (data , 1 , ddof = 1 ))
174+ x_bar = np .mean (data )
174175
175176 center = x_bar
176177 lcl = center - A3 [n ]* s_bar
@@ -183,7 +184,7 @@ def get_stats_x_bar_s_s(data, size):
183184 assert n >= 2
184185 assert n <= 10
185186
186- s_bar = numpy .mean (numpy .std (data , 1 , ddof = 1 ))
187+ s_bar = np .mean (np .std (data , 1 , ddof = 1 ))
187188
188189 center = s_bar
189190 lcl = B3 [n ]* s_bar
@@ -196,7 +197,7 @@ def get_stats_p(data, size):
196197 assert n > 1
197198
198199 pbar = float (sum (data )) / (n * len (data ))
199- sd = numpy .sqrt (pbar * (1 - pbar )/ n )
200+ sd = np .sqrt (pbar * (1 - pbar )/ n )
200201
201202 center = pbar
202203 lcl = center - 3 * sd
@@ -213,7 +214,7 @@ def get_stats_np(data, size):
213214 assert n > 1
214215
215216 pbar = float (sum (data )) / (n * len (data ))
216- sd = numpy .sqrt (n * pbar * (1 - pbar ))
217+ sd = np .sqrt (n * pbar * (1 - pbar ))
217218
218219 center = n * pbar
219220 lcl = center - 3 * sd
@@ -226,13 +227,13 @@ def get_stats_np(data, size):
226227
227228
228229def get_stats_c (data , size ):
229- cbar = numpy .mean (data )
230+ cbar = np .mean (data )
230231
231232 center = cbar
232- lcl = center - 3 * numpy .sqrt (cbar )
233+ lcl = center - 3 * np .sqrt (cbar )
233234 if lcl < 0 :
234235 lcl = 0
235- ucl = center + 3 * numpy .sqrt (cbar )
236+ ucl = center + 3 * np .sqrt (cbar )
236237 return center , lcl , ucl
237238
238239
@@ -243,10 +244,10 @@ def get_stats_u(data, size):
243244 cbar = float (sum (data ))/ (len (data )* n )
244245
245246 center = cbar
246- lcl = center - 3 * numpy .sqrt (cbar / n )
247+ lcl = center - 3 * np .sqrt (cbar / n )
247248 if lcl < 0 :
248249 lcl = 0
249- ucl = center + 3 * numpy .sqrt (cbar / n )
250+ ucl = center + 3 * np .sqrt (cbar / n )
250251 return center , lcl , ucl
251252
252253
@@ -267,7 +268,7 @@ def prepare_data_none(data, size):
267268def prepare_data_x_bar_rs_x (data , size ):
268269 data2 = []
269270 for xset in data :
270- data2 .append (numpy .mean (xset ))
271+ data2 .append (np .mean (xset ))
271272 return data2
272273
273274
@@ -281,7 +282,7 @@ def prepare_data_x_bar_r_r(data, size):
281282def prepare_data_x_bar_s_s (data , size ):
282283 data2 = []
283284 for xset in data :
284- data2 .append (numpy .std (xset , ddof = 1 ))
285+ data2 .append (np .std (xset , ddof = 1 ))
285286 return data2
286287
287288
@@ -306,7 +307,7 @@ def prepare_data_u(data, size):
306307 return data2
307308
308309
309- def prepare_data_cusum (data , size , target = None ):
310+ def prepare_data_cusum (data , size , target = None ):
310311 """
311312 Prepares the data for a CUSUM graph
312313
@@ -320,7 +321,7 @@ def prepare_data_cusum(data, size, target = None):
320321 """
321322 data2 = []
322323 if target is None :
323- target = numpy .mean (data )
324+ target = np .mean (data )
324325 for d in data :
325326 data2 .append (float (d ) - target )
326327 data3 = [sum (data2 [:i ]) for i in xrange (len (data2 )+ 1 )]
@@ -411,16 +412,16 @@ def _find_violating_points(self, rules=[]):
411412 for i in xrange (len (self ._data )):
412413 for r in rs :
413414 func , points_num = RULES_FUNCS [r ]
414- if func == None or i <= points_num - 1 :
415+ if func is None or i <= points_num - 1 :
415416 continue
416417 if func (self ._data [i - points_num + 1 :i + 1 ], self .center , self .lcl , self .ucl ):
417418 points .setdefault (r , []).append (i )
418419 return points
419420
420421 def get_chart (self , ax = None ):
421422 """Generate chart using matplotlib."""
422- if not mpl_present :
423- raise Exception ("matplotlib not installed" )
423+ # if not mpl_present:
424+ # raise Exception("matplotlib not installed")
424425 if ax is None :
425426 ax = pylab
426427 ax .plot (self ._data , "bo-" )
@@ -436,19 +437,22 @@ def get_chart(self, ax=None):
436437 pylab .figtext (0.3 , 0.01 , "UCL = %0.3f" % self .ucl )
437438# pylab.figtext(0.05, 0.01, "StdDev = %0.3f" % self.sd)
438439
439- if self .violating_points .has_key (RULES_7_ON_ONE_SIDE ):
440+ if RULES_7_ON_ONE_SIDE in self .violating_points :
441+ # if self.violating_points.has_key():
440442 for i in self .violating_points [RULES_7_ON_ONE_SIDE ]:
441443 ax .plot ([i ], [self ._data [i ]], "yo" )
442- if self .violating_points .has_key (RULES_8_ON_ONE_SIDE ):
444+ if RULES_8_ON_ONE_SIDE in self .violating_points :
445+ # if self.violating_points.has_key(RULES_8_ON_ONE_SIDE):
443446 for i in self .violating_points [RULES_8_ON_ONE_SIDE ]:
444447 ax .plot ([i ], [self ._data [i ]], "yo" )
445- if self .violating_points .has_key (RULES_1_BEYOND_3SIGMA ):
448+ if RULES_1_BEYOND_3SIGMA in self .violating_points :
449+ # if self.violating_points.has_key(RULES_1_BEYOND_3SIGMA):
446450 for i in self .violating_points [RULES_1_BEYOND_3SIGMA ]:
447451 ax .plot ([i ], [self ._data [i ]], "ro" )
448452# pylab.show()
449453 return ax
450454
451- def get_violating_points (self , rules = [] ):
455+ def get_violating_points (self ):
452456 """Return points that violates rules of control chart"""
453457 return self .violating_points
454458
0 commit comments