Mercurial > sqlpython
changeset 157:c03574f007df
it's so beautiful it makes me cry
author | catherine@dellzilla |
---|---|
date | Mon, 29 Sep 2008 15:30:23 -0400 |
parents | 4927f901a634 |
children | 01b3454f3a5d |
files | sqlpython/plothandler.py sqlpython/sqlpyPlus.py sqlpython/sqlpython.py |
diffstat | 3 files changed, 24 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/sqlpython/plothandler.py Mon Sep 29 14:50:31 2008 -0400 +++ b/sqlpython/plothandler.py Mon Sep 29 15:30:23 2008 -0400 @@ -1,4 +1,4 @@ -import shelve, pickle, cx_Oracle, datetime, sys +import shelve, pickle, cx_Oracle, datetime, sys, itertools shelvename = 'plot.shelve' try: @@ -38,32 +38,39 @@ self.draw() def bar(self): barEdges = pylab.arange(len(self.xvalues)) - width = 0.5 - for yseries in self.yserieslists: - pylab.bar(barEdges, yseries, width=width) - if self.xticks: - pylab.xticks(barEdges + (0.5 * width), self.xticks) + width = 0.5 / len(self.yserieslists) + colorcycler = itertools.cycle('rgb') + for (offset, yseries) in enumerate(self.yserieslists): + self.yplots.append(pylab.bar(barEdges + (offset*width), yseries, width=width, color=colorcycler.next())) + pylab.xticks(barEdges + 0.25, self.xticks or self.xvalues) def line(self, markers): for yseries in self.yserieslists: - pylab.plot(self.xvalues, yseries, markers) + self.yplots.append(pylab.plot(self.xvalues, yseries, markers)) if self.xticks: pylab.xticks(self.xvalues, self.xticks) - def draw(self, chartGuts, markers=None): + def pie(self): + self.yplots.append(pylab.pie(self.yserieslists[0], labels=self.xticks or self.xvalues)) + self.legends = [self.legends[0]] + def draw(self): if not self.yserieslists: print 'At least one quantitative column needed to plot.' return None - if self.outformat == '\\p': + self.yplots = [] + if self.outformat == '\\l': self.line('-o') - elif self.outformat == '\\P': + elif self.outformat == '\\L': self.line('-') + elif self.outformat == '\\p': + self.pie() else: self.bar() pylab.xlabel(self.xlabel) pylab.title(self.title) - pylab.legend(self.legends) + pylab.legend([p[0] for p in self.yplots], self.legends, shadow=True) pylab.show() print 'You can edit this plot from the command prompt (outside sqlpython) by running' print "ipython -pylab -c 'import sqlpython.plothandler; sqlpython.plothandler.Plot().unshelve()'" + print "See matplotlib documentation for editing instructions: http://matplotlib.sourceforge.net/" # there's got to be a way to install a shell script like that through setuptools... but how? except ImportError:
--- a/sqlpython/sqlpyPlus.py Mon Sep 29 14:50:31 2008 -0400 +++ b/sqlpython/sqlpyPlus.py Mon Sep 29 15:30:23 2008 -0400 @@ -439,7 +439,7 @@ transpr[x][0] = rname newdesc[0][0] = 'COLUMN NAME' result = '\n' + sqlpython.pmatrix(transpr,newdesc) - elif outformat in ('\\p', '\\P', '\\b'): + elif outformat in ('\\l', '\\L', '\\p', '\\b'): plot = Plot() plot.build(self, outformat) plot.shelve() @@ -499,7 +499,7 @@ return completions rowlimitPattern = pyparsing.Word(pyparsing.nums)('rowlimit') - rawTerminators = '; \\s \\S \\c \\C \\t \\i \\p \\P \\b ' + ' '.join(output_templates.keys()) + rawTerminators = '; \\s \\S \\c \\C \\t \\i \\p \\l \\L \\b ' + ' '.join(output_templates.keys()) terminatorPattern = (pyparsing.oneOf(rawTerminators) ^ pyparsing.Literal('\n/') ^ \ (pyparsing.Literal('\nEOF') + pyparsing.stringEnd)) \
--- a/sqlpython/sqlpython.py Mon Sep 29 14:50:31 2008 -0400 +++ b/sqlpython/sqlpython.py Mon Sep 29 15:30:23 2008 -0400 @@ -107,9 +107,10 @@ \\S CSV (no headings) \\t transposed \\x XML -\\p plot, with markers -\\P plot, lines only -\\b bar graph""" +\\l line plot, with markers +\\L line plot, lines only +\\b bar graph +\\p pie chart""" print self.do_terminators.__doc__ terminatorSearchString = '|'.join('\\' + d.split()[0] for d in do_terminators.__doc__.splitlines())