Я только что заметил странное поведение с GridLinePlot()
в Django
проект. Кажется, что форма линии в порядке, но что
Ярлыки оси Y вышли из строя. Код, который я использую ниже:
class MyLineChartDrawing(Drawing):
def __init__(self, width=600, height=400, *args, **kw):
apply(Drawing.__init__,(self,width,height)+args,kw)
self.add(GridLinePlot(), name='chart')
self.chart.x = 50 # The x coordinate of the reference point
self.chart.y = 30 # The y coordinate of the reference point
self.chart.width = self.width - 150 # The width of the chart
self.chart.height = self.height - 75 # The height of the chart
self.chart.data = [[('20110930', 80), ('20111007', 116), ('20111014',139), ('20111021', 163), ('20111028', 105), ('20111104', 97), ('20111111', 112)]]
def HttpChart (self, title, XLabel, YLabel, data, isPercent=False):
return (renderSVG.drawToString(self))
Чтобы вызвать это, я просто делаю следующее:
d = MyLineChartDrawing(width=chartWidth, height=chartHeight)
return HttpResponse(d.HttpChart ("", "", "MyYAxisTitle", edata),'image/svg+xml')
Похоже, что на оси происходит некоторое масштабирование, которое не применяется к координатам, нанесенным на график, это становится довольно драматичным, когда я добавляю больше данных. Например, этот список self.chart.data
, который просто добавляет еще одну точку в начало списка, приводит к тому, что масштабирование изменяется от слегка неправильного до примерно 50%.
self.chart.data = [[('20110923', 32), ('20110930', 80), ('20111007', 116), ('20111014', 139), ('20111021', 163), ('20111028', 105), ('20111104', 97), ('20111111', 112)]]
Я использую ReportLab 2.5, Django 1.3.0, Python 2.7, работающий на OSX 10.7.2.
Заранее благодарим за любую помощь или совет.