如何在 ReportLab 中将聊天栏中的每个栏设置为不同的颜色?
How to set each individual bar in a bar chat to a different color in ReportLab?
我正在使用此函数通过 Reportlab
创建条形图
def make_drawing():
from reportlab.lib import colors
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import HorizontalBarChart
drawing = Drawing(400, 200)
data = [
(13, 5, 20, 22, 37, 98, 19, 4),
]
names = ["Cat %s" % i for i in xrange(1, len(data[0])+1)]
bc = HorizontalBarChart()
bc.x = 20
bc.y = 50
bc.height = 200
bc.width = 400
bc.data = data
bc.strokeColor = colors.white
bc.valueAxis.valueMin = 0
bc.valueAxis.valueMax = 100
bc.valueAxis.valueStep = 10
bc.categoryAxis.labels.boxAnchor = 'ne'
bc.categoryAxis.labels.dx = -10
bc.categoryAxis.labels.fontName = 'Helvetica'
bc.categoryAxis.categoryNames = names
drawing.add(bc)
return drawing
默认情况下条形图颜色设置为红色
我在设置后加上这两行bc.categoryAxis.categoryNames
bc.bars[0].fillColor = colors.blue
bc.bars[1].fillColor = colors.red
希望将第一个栏设置为蓝色。但是现在所有的条都是蓝色的。
条形图可以像这样在每个位置有多个条形图
因此,bars 是二维数组。您可以像这样为单个条设置颜色
bc.bars[(0, 0)].fillColor = colors.blue
bc.bars[(0, 1)].fillColor = colors.green
这将生成这样的图表
这是一个迟到的答案,但这是我在寻找相同解决方案时发现的第一个结果。
是的,如果您在一个条形图中有一系列条形图,您可以按其索引为每个系列着色。但是要为一个系列中的每个条形图着色,您可以使用坐标:
bc.bars[(0, 1)].fillColor = colors.blue
bc.bars[(0, 2)].fillColor = colors.red
等等
我正在使用此函数通过 Reportlab
创建条形图def make_drawing():
from reportlab.lib import colors
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import HorizontalBarChart
drawing = Drawing(400, 200)
data = [
(13, 5, 20, 22, 37, 98, 19, 4),
]
names = ["Cat %s" % i for i in xrange(1, len(data[0])+1)]
bc = HorizontalBarChart()
bc.x = 20
bc.y = 50
bc.height = 200
bc.width = 400
bc.data = data
bc.strokeColor = colors.white
bc.valueAxis.valueMin = 0
bc.valueAxis.valueMax = 100
bc.valueAxis.valueStep = 10
bc.categoryAxis.labels.boxAnchor = 'ne'
bc.categoryAxis.labels.dx = -10
bc.categoryAxis.labels.fontName = 'Helvetica'
bc.categoryAxis.categoryNames = names
drawing.add(bc)
return drawing
默认情况下条形图颜色设置为红色
我在设置后加上这两行bc.categoryAxis.categoryNames
bc.bars[0].fillColor = colors.blue
bc.bars[1].fillColor = colors.red
希望将第一个栏设置为蓝色。但是现在所有的条都是蓝色的。
条形图可以像这样在每个位置有多个条形图
因此,bars 是二维数组。您可以像这样为单个条设置颜色
bc.bars[(0, 0)].fillColor = colors.blue
bc.bars[(0, 1)].fillColor = colors.green
这将生成这样的图表
这是一个迟到的答案,但这是我在寻找相同解决方案时发现的第一个结果。
是的,如果您在一个条形图中有一系列条形图,您可以按其索引为每个系列着色。但是要为一个系列中的每个条形图着色,您可以使用坐标:
bc.bars[(0, 1)].fillColor = colors.blue
bc.bars[(0, 2)].fillColor = colors.red
等等