使用Report Lab在Python中绘制区域线图

时间:2011-12-29 19:46:44

标签: python plot line reportlab

我正在使用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

我的预期输出是灰色应该代替红色,这是线图下面的区域。另一个问题是如何将轴标题添加到此图表中。例如,我需要将“Months”作为我的X轴,将“%of NAV”作为我的Y轴。

2 个答案:

答案 0 :(得分:1)

要定义线条的颜色,您似乎需要访问...好吧,线条:)。所以,lp.lines[0].strokeColor = colors.grey代替lp.strokeColor = colors.grey,因为那个是情节背景颜色!

关于标签的问题有点棘手,但是...... ScatterPlot包括为X和Y轴设置标签的功能,但AreaLinePlot不是这种情况。当然,如果您要经常使用它,可以从AreaLinePlot复制该功能派生一个类。

答案 1 :(得分:0)

更改

lp = AreaLinePlot()

lp = LinePlot()

并尝试

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

但填充颜色与线条颜色相同。

归功于@RicardoCárdenes