11import math
22from collections import Counter
33import optparse
4+ import sys
45
56
67def drange (start , stop , step = 1.0 ):
@@ -18,14 +19,23 @@ def calc_bins(n, min_val, max_val, h=None):
1819 for b in drange (min_val , max_val , bin_width ):
1920 yield b
2021
21- def plot_hist (f , height = 20 , bincount = None ):
22+ def read_numbers (numbers ):
23+ if isinstance (numbers , list ):
24+ for n in numbers :
25+ yield float (n .strip ())
26+ else :
27+ for n in open (numbers ):
28+ yield float (n .strip ())
29+
30+ def plot_hist (f , height = 20 , bincount = None , pch = "o" ):
2231 "plot a histogram given a file of numbers"
2332 #first apss
33+ if pch is None :
34+ pch = "o"
2435 min_val , max_val = None , None
2536 n = 0.
26- for number in open (f ):
37+ for number in read_numbers (f ):
2738 n += 1
28- number = float (number )
2939
3040 if not min_val or number < min_val :
3141 min_val = number
@@ -34,8 +44,7 @@ def plot_hist(f, height=20, bincount=None):
3444
3545 bins = list (calc_bins (n , min_val , max_val , bincount ))
3646 hist = Counter ()
37- for number in open (f ):
38- number = float (number )
47+ for number in read_numbers (f ):
3948 for i , b in enumerate (bins ):
4049 if number < b :
4150 hist [i - 1 ] += 1
@@ -60,7 +69,7 @@ def plot_hist(f, height=20, bincount=None):
6069
6170 for i in range (len (hist )):
6271 if y < hist [i ]:
63- print "o" ,
72+ print pch ,
6473 else :
6574 print " " ,
6675 print
@@ -71,14 +80,14 @@ def plot_hist(f, height=20, bincount=None):
7180 for i in range (0 , nlen ):
7281 print " " * (nlen + 1 ),
7382 for x in range (0 , len (hist )):
74- n = str (bins [x ])
83+ num = str (bins [x ])
7584 if x % 2 == 0 :
7685 print " " ,
77- elif i < len (n ):
78- print n [i ],
86+ elif i < len (num ):
87+ print num [i ],
7988 print
8089
81- summary = "Summary\n --------\n Max: %s\n Min:%s " % (min_val , max_val )
90+ summary = "Summary\n --------\n Max: %s\n Min: %s \n Count: %s " % (min_val , max_val , int ( n ) )
8291 print summary
8392
8493
@@ -89,15 +98,15 @@ def plot_hist(f, height=20, bincount=None):
8998 default = None , dest = 'f' )
9099 parser .add_option ('-b' , '--bins' , help = 'number of bins in the histogram' ,
91100 default = None , dest = 'b' )
92- parser .add_option ('-s' , help = 'height of the histogram (in lines)' ,
101+ parser .add_option ('-s' , '--height' , help = 'height of the histogram (in lines)' ,
93102 default = 20 , dest = 'h' )
94-
103+ parser . add_option ( '-p' , '--pch' , help = 'shape of each bar' , default = 'o' , dest = 'p' )
95104 (opts , args ) = parser .parse_args ()
96105
97106 if opts .f is None :
98107 opts .f = args [0 ]
99108
100- plot_hist (opts .f , opts .h , opts .b )
109+ plot_hist (opts .f , opts .h , opts .b , opts . p )
101110
102111
103112
0 commit comments