402
406
# -------------------------------------------------------------------------
404
408
def fill_solid(self, area, colour):
405
assert(area in (Chart.BACKGROUND, Chart.CHART))
409
assert(area in Chart.VALID_SOLID_FILL_TYPES)
406
410
_check_colour(colour)
407
411
self.fill_area[area] = colour
408
412
self.fill_types[area] = Chart.SOLID
423
427
def fill_linear_gradient(self, area, angle, *args):
424
assert(area in (Chart.BACKGROUND, Chart.CHART))
428
assert(area in Chart.VALID_SOLID_FILL_TYPES)
425
429
args = self._check_fill_linear(angle, *args)
426
430
self.fill_types[area] = Chart.LINEAR_GRADIENT
427
431
self.fill_area[area] = ','.join([str(angle)] + args)
429
433
def fill_linear_stripes(self, area, angle, *args):
430
assert(area in (Chart.BACKGROUND, Chart.CHART))
434
assert(area in Chart.VALID_SOLID_FILL_TYPES)
431
435
args = self._check_fill_linear(angle, *args)
432
436
self.fill_types[area] = Chart.LINEAR_STRIPES
433
437
self.fill_area[area] = ','.join([str(angle)] + args)
435
439
def fill_to_url(self):
437
for area in (Chart.BACKGROUND, Chart.CHART):
441
for area in (Chart.BACKGROUND, Chart.CHART, Chart.ALPHA):
438
442
if self.fill_types[area]:
439
443
areas.append('%s,%s,%s' % (area, self.fill_types[area], \
440
444
self.fill_area[area]))
716
720
assert(type(self) != BarChart) # This is an abstract class
717
721
Chart.__init__(self, *args, **kwargs)
718
722
self.bar_width = None
720
725
def set_bar_width(self, bar_width):
721
726
self.bar_width = bar_width
723
def get_url_bits(self, data_class=None):
728
def set_zero_line(self, index, zero_line):
729
self.zero_lines[index] = zero_line
731
def get_url_bits(self, data_class=None, skip_chbh=False):
724
732
url_bits = Chart.get_url_bits(self, data_class=data_class)
725
if self.bar_width is not None:
733
if not skip_chbh and self.bar_width is not None:
726
734
url_bits.append('chbh=%i' % self.bar_width)
737
for index in xrange(max(self.zero_lines) + 1):
738
if index in self.zero_lines:
739
zero_line.append(str(self.zero_lines[index]))
741
zero_line.append('0')
742
url_bits.append('chp=%s' % ','.join(zero_line))
762
778
def get_url_bits(self, data_class=None):
763
779
# Skip 'BarChart.get_url_bits' and call Chart directly so the parent
764
780
# doesn't add "chbh" before we do.
765
url_bits = Chart.get_url_bits(self, data_class=data_class)
781
url_bits = BarChart.get_url_bits(self, data_class=data_class,
766
783
if self.group_spacing is not None:
767
784
if self.bar_spacing is None:
768
785
raise InvalidParametersException('Bar spacing is required to ' \
887
904
chart = ScatterChart(320, 200)
888
905
chart = SimpleLineChart(320, 200)
889
906
chart = GroupedVerticalBarChart(320, 200)
890
chart = SplineRadarChart(500, 500)
891
chart = MapChart(440, 220)
892
chart = GoogleOMeterChart(440, 220, x_range=(0, 100))
907
# chart = SplineRadarChart(500, 500)
908
# chart = MapChart(440, 220)
909
# chart = GoogleOMeterChart(440, 220, x_range=(0, 100))
893
910
sine_data = [math.sin(float(a) / math.pi) * 100 for a in xrange(100)]
894
911
random_data = [random.random() * 100 for a in xrange(100)]
895
912
random_data2 = [random.random() * 50 for a in xrange(100)]
896
913
# chart.set_bar_width(50)
897
914
# chart.set_bar_spacing(0)
898
# chart.add_data(sine_data)
899
# chart.add_data(random_data)
915
chart.add_data(sine_data)
916
chart.add_data(random_data)
917
chart.set_zero_line(1, .5)
900
918
# chart.add_data(random_data2)
901
919
# chart.set_line_style(0, thickness=5)
902
920
# chart.set_line_style(1, thickness=2, line_segment=10, blank_segment=5)
903
921
# chart.set_title('heloooo weeee')
904
922
# chart.set_legend(('sine wave', 'random * x'))
905
# chart.set_colours(('ee2000', 'DDDDAA', 'fF03f2'))
906
# chart.fill_solid(Chart.BACKGROUND, '123456')
907
# chart.fill_linear_gradient(Chart.CHART, 20, '004070', 1, '300040', 0,
923
chart.set_colours(('ee2000', 'DDDDAA', 'fF03f2'))
924
# chart.fill_solid(Chart.ALPHA, '123456')
925
# chart.fill_linear_gradient(Chart.ALPHA, 20, '004070', 1, '300040', 0,
909
927
# chart.fill_linear_stripes(Chart.CHART, 20, '204070', .2, '300040', .2,
910
928
# 'aabbcc00', 0.2)
911
929
# axis_left_index = chart.set_axis_range(Axis.LEFT, 0, 10)
914
932
# chart.set_axis_positions(axis_bottom_index, [1, 25, 95])
915
933
# chart.set_axis_style(axis_bottom_index, '003050', 15)
917
chart.set_pie_labels(('apples', 'oranges', 'bananas'))
935
# chart.set_pie_labels(('apples', 'oranges', 'bananas'))
919
937
# chart.set_grid(10, 10)
920
938
# for a in xrange(0, 100, 10):
929
947
# chart.add_data([1,2,3])
930
948
# chart.set_colours(('EEEEEE', '000000', '00FF00'))
932
chart.add_data([50,75])
933
chart.set_pie_labels(('apples', 'oranges'))
950
# chart.add_data([50,75])
951
# chart.set_pie_labels(('apples', 'oranges'))
935
953
url = chart.get_url()