График площади линии в Python с использованием Report Lab - PullRequest
2 голосов
/ 29 декабря 2011

Я использую Reportlab для создания графиков в моих отчетах PDF. Я создавал участок линии площади и застрял в точке, где я не могу понять, почему я не получаю вывод, который хотел бы видеть.

Вот код, который я написал для вывода:

def standardLinePlot(data, width=200, height=200):

    d = Drawing(width, height)
    lp = AreaLinePlot()
    lp.data=data
    lp.width, lp.height = width, height
    lp.xValueAxis.valueMin = 0
    lp.xValueAxis.valueMax =36
    lp.xValueAxis.valueSteps = [0,6,12,18,24,30,36]

    lp.yValueAxis.valueMin = 0
    lp.yValueAxis.valueMax =100

    lp.strokeColor=colors.black
    lp.fillColor=colors.grey

    lp.reversePlotOrder = False

    lp.joinedLines=1

    d.add(lp)

    return d

Вывод, который я получаю:

Area Line Plot

Мой предполагаемый вывод - серый цвет должен быть вместо красного, который является областью под линейным графиком. Другая проблема заключается в том, как я могу добавить название оси к этой диаграмме. Например, мне нужно, чтобы «Месяцы» были моей осью X, а «% NAV» - моей осью Y.

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Чтобы определить цвет линий, кажется, вам нужен доступ ... ну, к линиям :). Таким образом, lp.lines[0].strokeColor = colors.grey вместо lp.strokeColor = colors.grey, так как это идет для цвета фона графика!

Вопрос о метках немного сложнее, хотя ... ScatterPlot включает в себя функциональность для установки меток для осей X и Y, но это не относится к AreaLinePlot. Конечно, вы можете получить класс из AreaLinePlot, копирующего эту функциональность, если вы собираетесь использовать его часто.

0 голосов
/ 25 октября 2016

Измените

lp = AreaLinePlot()

на

lp = LinePlot()

и попробуйте

lp.lines[0].strokeColor = colors.red
lp.lines[0].inFill = True

, но цвет заливки будет таким же, как цвет линии.

кредит переходит к @Ricardo Cárdenes

...