在Python中使用Report Lab绘制区域线图
我正在使用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
我得到的输出是:
我想要的输出是:图中红色的部分应该换成灰色,这部分是线图下方的区域。另外,我还想知道如何给这个图表添加坐标轴的标题。比如,我想把“月份”放在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
创建一个新的类,把这个功能复制过来。