diff options
| author | Fabien Pinckaers <fp@tinyerp.com> | 2009-03-15 20:07:01 +0100 |
|---|---|---|
| committer | Fabien Pinckaers <fp@tinyerp.com> | 2009-03-15 20:07:01 +0100 |
| commit | 81ed36a9f2e28ae426b07f4dbf4bf444728b2166 (patch) | |
| tree | f68937f7873228898c56d2808de59594b8e057e1 /bin/pychart/log_coord.py | |
| parent | 4ab081becaa3822c8965933603924504694f5c11 (diff) | |
Adding Pychart due to bug in recent pychart versions
bzr revid: fp@tinyerp.com-20090315190701-996gxy21rdr47a8c
Diffstat (limited to 'bin/pychart/log_coord.py')
| -rw-r--r-- | bin/pychart/log_coord.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/bin/pychart/log_coord.py b/bin/pychart/log_coord.py new file mode 100644 index 00000000000..e40308c9cf8 --- /dev/null +++ b/bin/pychart/log_coord.py @@ -0,0 +1,48 @@ +# +# Copyright (C) 2000-2005 by Yasushi Saito (yasushi.saito@gmail.com) +# +# Jockey is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2, or (at your option) any +# later version. +# +# Jockey is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +import coord +import math + +class T(coord.T): + def get_canvas_pos(self, size, val, min, max): + if val <= 0: + return 0 + xminl = math.log(min) + xmaxl = math.log(max) + vl = math.log(val) + return size * (vl-xminl) / float(xmaxl-xminl) + def get_tics(self, min, max, interval): + "Generate the list of places for drawing tick marks." + v = [] + if min <= 0: + raise Exception, "Min value (%s) < 0 in a log coordinate." % min + x = min + while x <= max: + v.append(x) + x = x * interval + return v + def get_min_max(self, dmin, dmax, interval): + interval = interval or 10 + dmin = max(0, dmin) # we can't have a negative value with a log scale. + v = 1.0 + while v > dmin: + v = v / interval + dmin = v + v = 1.0 + while v < dmax: + v = v * interval + dmax = v + + return dmin, dmax, interval + |
