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

3 投票
2 回答
2023 浏览
提问于 2025-04-17 09:13

我正在使用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轴上,把“净资产百分比”放在Y轴上。

2 个回答

0

lp = AreaLinePlot()

改成

lp = LinePlot()

然后试试看

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

不过填充的颜色会和线条的颜色一样。

感谢 @Ricardo Cárdenes 的贡献

2

要设置线条的颜色,你需要直接去修改线条本身的属性。也就是说,你应该用 lp.lines[0].strokeColor = colors.grey 这段代码,而不是 lp.strokeColor = colors.grey,因为后者是用来设置图表背景颜色的!

至于标签的问题就有点复杂了... ScatterPlot 这个功能可以设置 X 轴和 Y 轴的标签,但 AreaLinePlot 就没有这个功能。当然,如果你经常需要这个功能,可以从 AreaLinePlot 创建一个新的类,把这个功能复制过来。

撰写回答