如何更改pyGal折线图上绘制点的颜色

时间:2019-03-28 12:12:12

标签: python pygal

我通过传递要绘制图形的数字数组来使用pygal创建折线图。我希望图表上标记的点在一定范围之内/之外时会改变颜色。即如果某个点记录在40以上,则将其涂成红色;如果某个点记录在20以下,则将其涂成蓝色。

似乎没有一种简单的方法可以遍历数组并绘制单个点。

该图是使用以下代码制作的:

    customStyle = Style(colors=["#000000"])
    chart = pygal.Line(style=customStyle)
    chart.title = 'Browser usage evolution (in %)'
    chart.x_labels = recordedDates
    chart.add('Humidity', recordedHumidity)
    chart.render_to_png("out.png")

我希望所有点都高于40红色和低于20蓝色。

1 个答案:

答案 0 :(得分:1)

您可以使用dict替换数组中的数字,该数字告诉Pygal如何呈现数据点。 dict必须包含密钥value,这是您将要传递的数字,以及您要使用的所有自定义选项。 the value configuration page of the docs上提供了可用选项的列表,但此处您需要的是color

您可以简单地遍历现有数组,创建一个字典,其中color的值设置为适当的

data = []
for v in recordedHumidity:
    if v > 40:
        data.append({"value": v, "color": "red"})
    elif v < 20:
        data.append({"value": v, "color": "blue"})
    else:
        data.append(v)

然后您可以在添加序列时传递新创建的数组:

customStyle = Style(colors=["#000000"])
chart = pygal.Line(style=customStyle)
chart.x_labels = recordedDates
chart.add('Humidity', data)
chart.render_to_png("out.png")

Example chart with different coloured dots

您可能还希望查看文档中的chart configurationseries configuration页,以了解如何自定义图表的其他方面,例如标记的大小。