Browse Source

Number format

pull/8/head
Florian Mounier 13 years ago
parent
commit
4c54db8a2c
  1. 4
      pygal/base.py
  2. 13
      pygal/line.py
  3. 9
      pygal/style.py
  4. 5
      pygal/svg.py
  5. 14
      pygal/test/test_line.py

4
pygal/base.py

@ -7,7 +7,7 @@ class BaseGraph(object):
self.draw() self.draw()
return self.svg.render() return self.svg.render()
def _in_browser(self): def _in_browser(self, *args, **kwargs):
from lxml.html import open_in_browser from lxml.html import open_in_browser
self.draw() self.draw(*args, **kwargs)
open_in_browser(self.svg.root, encoding='utf-8') open_in_browser(self.svg.root, encoding='utf-8')

13
pygal/line.py

@ -6,12 +6,14 @@ from pygal.base import BaseGraph
class Line(BaseGraph): class Line(BaseGraph):
"""Line graph""" """Line graph"""
def __init__(self, width, height, scale_int=False): def __init__(self, width, height, precision=5,
format='g', style=None):
self.width = width self.width = width
self.height = height self.height = height
self.svg = Svg(width, height) self.svg = Svg(width, height, style=style)
self.label_font_size = 12 self.label_font_size = 12
self.scale_int = scale_int self.format = format
self.precision = precision
self.series = [] self.series = []
self.x_labels = self.y_labels = self.title = None self.x_labels = self.y_labels = self.title = None
@ -24,8 +26,9 @@ class Line(BaseGraph):
label = ymin label = ymin
labels = [] labels = []
while label < ymax: while label < ymax:
lbl = int(label) if self.scale_int else label labels.append(
labels.append(Label(str(lbl), lbl)) Label(('{:.%d%s}' % (
self.precision, self.format)).format(label), label))
label += step label += step
return labels return labels

9
pygal/style.py

@ -28,3 +28,12 @@ class Style(object):
return '\n'.join(map(color, enumerate(self._colors))) return '\n'.join(map(color, enumerate(self._colors)))
DefaultStyle = Style() DefaultStyle = Style()
LightStyle = Style(
background='transparent',
plot_background='rgba(0, 0, 255, 0.1)',
foreground='rgba(0, 0, 0, 0.7)',
foreground_light='rgba(0, 0, 0, 0.9)',
foreground_dark='rgba(0, 0, 0, 0.5)',
colors=('#242424', '#9f6767', '#92ac68',
'#d0d293', '#9aacc3', '#bb77a4',
'#77bbb5', '#777777'))

5
pygal/svg.py

@ -8,10 +8,11 @@ class Svg(object):
"""Svg object""" """Svg object"""
ns = 'http://www.w3.org/2000/svg' ns = 'http://www.w3.org/2000/svg'
def __init__(self, width, height, base_css=None): def __init__(self, width, height, base_css=None, style=None):
self.width = width self.width = width
self.height = height self.height = height
self.margin = () self.margin = ()
self.style = style or DefaultStyle
self.root = etree.Element( self.root = etree.Element(
"{%s}svg" % self.ns, "{%s}svg" % self.ns,
attrib={ attrib={
@ -40,7 +41,7 @@ class Svg(object):
.replace(' }}', '\x00') .replace(' }}', '\x00')
.replace('}', '}}') .replace('}', '}}')
.replace('\x00', '}') .replace('\x00', '}')
.format(style=DefaultStyle)) .format(style=self.style))
def node(self, parent=None, tag='g', attrib=None, **extras): def node(self, parent=None, tag='g', attrib=None, **extras):
if parent is None: if parent is None:

14
pygal/test/test_line.py

@ -1,14 +1,14 @@
from pygal import Serie, Margin, Label
from pygal.line import Line from pygal.line import Line
from pygal.style import LightStyle
from math import cos, sin from math import cos, sin
def test_simple_line(): def test_simple_line():
line = Line(800, 600) line = Line(800, 600, style=LightStyle, precision=2, format='f')
line.add('test1', [cos(x / 10.) for x in range(-30, 30, 5)]) rng = range(-30, 30, 5)
line.add('test2', [sin(x / 10.) for x in range(-30, 30, 5)]) line.add('test1', [cos(x / 10.) for x in rng])
line.add('test3', [cos(x / 10.) - sin(x / 10.) for x in range(-30, 30, 5)]) line.add('test2', [sin(x / 10.) for x in rng])
line.x_labels = map(str, range(-30, 30, 5)) line.add('test3', [cos(x / 10.) - sin(x / 10.) for x in rng])
# line.y_labels = [Label(str(lbl / 100.), lbl / 100.) for lbl in range(20)] line.x_labels = map(str, rng)
line.title = "cos sin and cos - sin" line.title = "cos sin and cos - sin"
line._in_browser() line._in_browser()

Loading…
Cancel
Save