如何将条形图中的每个单独栏设置为ReportLab中的其他颜色?

时间:2015-08-27 05:00:40

标签: python python-2.7 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

默认情况下,条形图颜色设置为红色

enter image description here

在设置bc.categoryAxis.categoryNames

后添加这两行
    bc.bars[0].fillColor = colors.blue
    bc.bars[1].fillColor = colors.red

希望将第一个栏设置为蓝色。但是现在所有的酒吧都是蓝色的。

enter image description here

2 个答案:

答案 0 :(得分:2)

这是一个迟到的答案,但这是我在寻找相同解决方案时找到的第一个结果。

如果您在一个条形图中有一系列条形,则按照其索引为每个系列着色。但要为一个系列中的每个条形图着色,请使用坐标:

<li class="parent">

http://reportlab-users.reportlab.narkive.com/CZRXnJBQ/can-we-change-the-color-of-each-bar-in-a-vertical-bar-chart#post3

答案 1 :(得分:0)

条形图可以在每个位置都有多个条形像这样

enter image description here

因此,条形是二维数组。您可以将颜色设置为这样的单个条

<input type="checkbox" name="Category" value=@category["UUID"]  runat="server" />@category["CategoryName"]<br /> 

将生成这样的图表

enter image description here