161
161
TYPES = (BOTTOM, TOP, LEFT, RIGHT)
163
def __init__(self, axis_index, axis_type, **kw):
164
assert(axis_type in Axis.TYPES)
163
def __init__(self, axis, **kw):
164
assert(axis in Axis.TYPES)
165
165
self.has_style = False
166
self.axis_index = axis_index
167
self.axis_type = axis_type
168
167
self.positions = None
170
def set_index(self, axis_index):
171
self.axis_index = axis_index
169
def set_index(self, index):
173
172
def set_positions(self, positions):
174
173
self.positions = positions
193
192
def positions_to_url(self):
195
bits.append(str(self.axis_index))
194
bits.append(str(self.index))
196
195
bits += [str(a) for a in self.positions]
197
196
return ','.join(bits)
200
199
class LabelAxis(Axis):
202
def __init__(self, axis_index, axis_type, values, **kwargs):
203
Axis.__init__(self, axis_index, axis_type, **kwargs)
201
def __init__(self, axis, values, **kwargs):
202
Axis.__init__(self, axis, **kwargs)
204
203
self.values = [str(a) for a in values]
206
205
def __repr__(self):
207
return '%i:|%s' % (self.axis_index, '|'.join(self.values))
206
return '%i:|%s' % (self.index, '|'.join(self.values))
210
209
class RangeAxis(Axis):
212
def __init__(self, axis_index, axis_type, low, high, **kwargs):
213
Axis.__init__(self, axis_index, axis_type, **kwargs)
211
def __init__(self, axis, low, high, **kwargs):
212
Axis.__init__(self, axis, **kwargs)
217
216
def __repr__(self):
218
return '%i,%s,%s' % (self.axis_index, self.low, self.high)
217
return '%i,%s,%s' % (self.index, self.low, self.high)
221
220
# -----------------------------------------------------------------------------
412
410
# -------------------------------------------------------------------------
414
def set_axis_labels(self, axis_type, values):
415
assert(axis_type in Axis.TYPES)
416
values = [ urllib.quote(a) for a in values ]
417
axis_index = len(self.axis)
418
axis = LabelAxis(axis_index, axis_type, values)
419
self.axis.append(axis)
422
def set_axis_range(self, axis_type, low, high):
423
assert(axis_type in Axis.TYPES)
424
axis_index = len(self.axis)
425
axis = RangeAxis(axis_index, axis_type, low, high)
426
self.axis.append(axis)
429
def set_axis_positions(self, axis_index, positions):
431
self.axis[axis_index].set_positions(positions)
433
raise InvalidParametersException('Axis index %i has not been ' \
436
def set_axis_style(self, axis_index, colour, font_size=None, \
439
self.axis[axis_index].set_style(colour, font_size, alignment)
441
raise InvalidParametersException('Axis index %i has not been ' \
412
def set_axis_labels(self, axis, values):
413
assert(axis in Axis.TYPES)
414
self.axis[axis] = LabelAxis(axis, values)
416
def set_axis_range(self, axis, low, high):
417
assert(axis in Axis.TYPES)
418
self.axis[axis] = RangeAxis(axis, low, high)
420
def set_axis_positions(self, axis, positions):
421
assert(axis in Axis.TYPES)
422
if not self.axis[axis]:
423
raise InvalidParametersException('Please create an axis first')
424
self.axis[axis].set_positions(positions)
426
def set_axis_style(self, axis, colour, font_size=None, alignment=None):
427
assert(axis in Axis.TYPES)
428
if not self.axis[axis]:
429
raise InvalidParametersException('Please create an axis first')
430
self.axis[axis].set_style(colour, font_size, alignment)
444
432
def axis_to_url(self):
445
433
available_axis = []
451
for axis in self.axis:
452
available_axis.append(axis.axis_type)
439
for position, axis in self.axis.items():
443
axis.set_index(index)
444
available_axis.append(position)
453
445
if isinstance(axis, RangeAxis):
454
446
range_axis.append(repr(axis))
455
447
if isinstance(axis, LabelAxis):
678
670
# 'aabbcc00', 0.5)
679
671
# chart.fill_linear_stripes(Chart.CHART, 20, '204070', .2, '300040', .2,
680
672
# 'aabbcc00', 0.2)
681
axis_left_index = chart.set_axis_range(Axis.LEFT, 0, 10)
682
axis_left_index = chart.set_axis_range(Axis.LEFT, 0, 10)
683
axis_left_index = chart.set_axis_range(Axis.LEFT, 0, 10)
684
axis_right_index = chart.set_axis_range(Axis.RIGHT, 5, 30)
685
axis_bottom_index = chart.set_axis_labels(Axis.BOTTOM, [1, 25, 95])
686
chart.set_axis_positions(axis_bottom_index, [1, 25, 95])
687
chart.set_axis_style(axis_bottom_index, '003050', 15)
673
chart.set_axis_range(Axis.LEFT, 0, 10)
674
chart.set_axis_range(Axis.RIGHT, 5, 30)
675
chart.set_axis_labels(Axis.BOTTOM, [1, 25, 95])
676
chart.set_axis_positions(Axis.BOTTOM, [1, 25, 95])
677
chart.set_axis_style(Axis.BOTTOM, 'FFFFFF', 15)
689
679
# chart.set_pie_labels(('apples', 'oranges', 'bananas'))