mirror of https://github.com/Kozea/pygal.git
Florian Mounier
13 years ago
8 changed files with 244 additions and 33 deletions
@ -1,3 +1,20 @@ |
|||||||
from collections import namedtuple |
from collections import namedtuple |
||||||
|
|
||||||
Serie = namedtuple('Serie', ('title', 'values')) |
Serie = namedtuple('Serie', ('title', 'values')) |
||||||
|
Label = namedtuple('Label', ('label', 'pos')) |
||||||
|
|
||||||
|
|
||||||
|
class Margin(object): |
||||||
|
def __init__(self, top, right, bottom, left): |
||||||
|
self.top = top |
||||||
|
self.right = right |
||||||
|
self.bottom = bottom |
||||||
|
self.left = left |
||||||
|
|
||||||
|
@property |
||||||
|
def x(self): |
||||||
|
return self.left + self.right |
||||||
|
|
||||||
|
@property |
||||||
|
def y(self): |
||||||
|
return self.top + self.bottom |
||||||
|
@ -0,0 +1,64 @@ |
|||||||
|
.graph > .background { |
||||||
|
fill: black; |
||||||
|
} |
||||||
|
|
||||||
|
.plot > .background { |
||||||
|
fill: #111; |
||||||
|
} |
||||||
|
|
||||||
|
.axis text { |
||||||
|
fill: #777; |
||||||
|
font-size: 12px; |
||||||
|
font-family: sans; |
||||||
|
} |
||||||
|
|
||||||
|
.axis.x text { |
||||||
|
text-anchor: middle; |
||||||
|
alignment-baseline: baseline; |
||||||
|
} |
||||||
|
|
||||||
|
.axis.y text { |
||||||
|
text-anchor: end; |
||||||
|
alignment-baseline: middle; |
||||||
|
} |
||||||
|
|
||||||
|
.axis .line { |
||||||
|
stroke: #ccc; |
||||||
|
} |
||||||
|
|
||||||
|
.axis .guide.line { |
||||||
|
stroke: #555; |
||||||
|
stroke-dasharray: 5,5; |
||||||
|
} |
||||||
|
|
||||||
|
.series .dots .dot text { |
||||||
|
font-size: 10px; |
||||||
|
text-anchor: middle; |
||||||
|
alignment-baseline: baseline; |
||||||
|
stroke: none; |
||||||
|
fill: none; |
||||||
|
} |
||||||
|
|
||||||
|
.series .dots .dot:hover text { |
||||||
|
fill: #ccc; |
||||||
|
} |
||||||
|
|
||||||
|
.series .line { |
||||||
|
fill: none; |
||||||
|
stroke-width: 1.5px; |
||||||
|
} |
||||||
|
|
||||||
|
.series .line:hover { |
||||||
|
fill: none; |
||||||
|
stroke-width: 3px; |
||||||
|
} |
||||||
|
|
||||||
|
.serie-0 { |
||||||
|
stroke: blue; |
||||||
|
fill: blue; |
||||||
|
} |
||||||
|
|
||||||
|
.serie-1 { |
||||||
|
stroke: red; |
||||||
|
fill: red; |
||||||
|
} |
@ -1,7 +1,10 @@ |
|||||||
from pygal.line import Line |
from pygal.line import Line |
||||||
|
from math import cos, sin |
||||||
|
|
||||||
|
|
||||||
def test_simple_line(): |
def test_simple_line(): |
||||||
line = Line(800, 600) |
line = Line(800, 600) |
||||||
line.add('test', [10, 20, 5, 17]) |
line.add('test2', [cos(x / 10.) for x in range(-30, 30, 5)]) |
||||||
|
line.add('test2', [sin(x / 10.) for x in range(-30, 30, 5)]) |
||||||
|
line.set_labels(map(str, range(-30, 30, 5))) |
||||||
line._in_browser() |
line._in_browser() |
||||||
|
@ -0,0 +1,28 @@ |
|||||||
|
|
||||||
|
|
||||||
|
class Box(object): |
||||||
|
def __init__(self, x, y, width, height): |
||||||
|
self.x = x |
||||||
|
self.y = y |
||||||
|
self.width = width |
||||||
|
self.height = height |
||||||
|
|
||||||
|
|
||||||
|
class View(object): |
||||||
|
def __init__(self, width, height, xmin, xmax, ymin, ymax): |
||||||
|
self.width = width |
||||||
|
self.height = height |
||||||
|
self.box = Box(xmin, ymin, xmax - xmin, ymax - ymin) |
||||||
|
|
||||||
|
def x(self, x): |
||||||
|
return self.width * (x - self.box.x) / float(self.box.width) |
||||||
|
|
||||||
|
def y(self, y): |
||||||
|
return (self.height - self.height * |
||||||
|
(y - self.box.y) / float(self.box.height)) |
||||||
|
|
||||||
|
def __call__(self, xy): |
||||||
|
x, y = xy |
||||||
|
return ( |
||||||
|
self.x(x), |
||||||
|
self.y(y)) |
Loading…
Reference in new issue