break pie chart into separate function

This commit is contained in:
Matt Mackall 2009-04-06 23:19:46 -07:00
commit 37546c5021

72
smem
View file

@ -390,40 +390,8 @@ def showtable(rows, fields, columns, sort):
l.sort(reverse=bool(options.reverse))
if options.pie:
if (l[0][0] < l[-1][0]):
l.reverse()
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)
showpie(l, sort)
return
if not options.no_header:
print header
@ -444,6 +412,42 @@ def showtable(rows, fields, columns, sort):
print "-" * len(header)
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.add_option("-H", "--no-header", action="store_true",
help="disable header line")