Проблема масштабирования оси Y с помощью GridLinePlot () в ReportLab - PullRequest
2 голосов
/ 16 ноября 2011

Я только что заметил странное поведение с 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.

Заранее благодарим за любую помощь или совет.

...