我通过传递要绘制图形的数字数组来使用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蓝色。
答案 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")
您可能还希望查看文档中的chart configuration和series configuration页,以了解如何自定义图表的其他方面,例如标记的大小。