break pie chart into separate function
This commit is contained in:
parent
a7879677dd
commit
37546c5021
1 changed files with 38 additions and 34 deletions
72
smem
72
smem
|
|
@ -390,40 +390,8 @@ def showtable(rows, fields, columns, sort):
|
||||||
l.sort(reverse=bool(options.reverse))
|
l.sort(reverse=bool(options.reverse))
|
||||||
|
|
||||||
if options.pie:
|
if options.pie:
|
||||||
if (l[0][0] < l[-1][0]):
|
showpie(l, sort)
|
||||||
l.reverse()
|
return
|
||||||
try:
|
|
||||||
import pylab
|
|
||||||
except ImportError:
|
|
||||||
sys.write.stderr("pie chart requires matplotlib")
|
|
||||||
sys.exit(-1)
|
|
||||||
|
|
||||||
labels = [r[1][-1] for r in l]
|
|
||||||
values = [r[0] for r in l] # sort field
|
|
||||||
|
|
||||||
tm = totalmem() / 1024
|
|
||||||
s = sum(values)
|
|
||||||
unused = tm - s
|
|
||||||
t = 0
|
|
||||||
while t + values[-1] < (tm * .02) or values[-1] < (tm * .005):
|
|
||||||
t += values.pop()
|
|
||||||
labels.pop()
|
|
||||||
if t:
|
|
||||||
values.append(t)
|
|
||||||
labels.append('other')
|
|
||||||
|
|
||||||
explode = [0] * len(values)
|
|
||||||
if unused > 0:
|
|
||||||
values.insert(0, unused)
|
|
||||||
labels.insert(0, 'unused')
|
|
||||||
explode.insert(0, .05)
|
|
||||||
|
|
||||||
pylab.figure(1, figsize=(6,6))
|
|
||||||
ax = pylab.axes([0.1, 0.1, 0.8, 0.8])
|
|
||||||
pylab.pie(values, explode = explode, labels=labels,
|
|
||||||
autopct="%.2f%%", shadow=True)
|
|
||||||
pylab.show()
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if not options.no_header:
|
if not options.no_header:
|
||||||
print header
|
print header
|
||||||
|
|
@ -444,6 +412,42 @@ def showtable(rows, fields, columns, sort):
|
||||||
print "-" * len(header)
|
print "-" * len(header)
|
||||||
print format % tuple([f(v) for f,v in zip(formatter, t)])
|
print format % tuple([f(v) for f,v in zip(formatter, t)])
|
||||||
|
|
||||||
|
def showpie(l, sort):
|
||||||
|
if (l[0][0] < l[-1][0]):
|
||||||
|
l.reverse()
|
||||||
|
try:
|
||||||
|
import pylab
|
||||||
|
except ImportError:
|
||||||
|
sys.stderr.write("pie chart requires matplotlib\n")
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
labels = [r[1][-1] for r in l]
|
||||||
|
values = [r[0] for r in l] # sort field
|
||||||
|
|
||||||
|
tm = totalmem() / 1024
|
||||||
|
s = sum(values)
|
||||||
|
unused = tm - s
|
||||||
|
t = 0
|
||||||
|
while t + values[-1] < (tm * .02) or values[-1] < (tm * .005):
|
||||||
|
t += values.pop()
|
||||||
|
labels.pop()
|
||||||
|
if t:
|
||||||
|
values.append(t)
|
||||||
|
labels.append('other')
|
||||||
|
|
||||||
|
explode = [0] * len(values)
|
||||||
|
if unused > 0:
|
||||||
|
values.insert(0, unused)
|
||||||
|
labels.insert(0, 'unused')
|
||||||
|
explode.insert(0, .05)
|
||||||
|
|
||||||
|
pylab.figure(1, figsize=(6,6))
|
||||||
|
ax = pylab.axes([0.1, 0.1, 0.8, 0.8])
|
||||||
|
pylab.pie(values, explode = explode, labels=labels,
|
||||||
|
autopct="%.2f%%", shadow=True)
|
||||||
|
pylab.title('%s by %s' % (options.pie, sort))
|
||||||
|
pylab.show()
|
||||||
|
|
||||||
parser = optparse.OptionParser("%prog [options]")
|
parser = optparse.OptionParser("%prog [options]")
|
||||||
parser.add_option("-H", "--no-header", action="store_true",
|
parser.add_option("-H", "--no-header", action="store_true",
|
||||||
help="disable header line")
|
help="disable header line")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue