2

使用下面的代码,我可以生成一个饼图。当我将鼠标悬停在馅饼的一个切片上时,它会显示该切片所占的百分比。

import pygal
results = [
    (15232,'Value 1'),
    (947,'Value 2'),
    (246,'Value 3'),
    (117,'Value 4'),
    (50,'Value 5'),
    (50,'Value 6'),
    (50,'Value 7'),
    (50,'Value 8'),
]

pie_chart = pygal.Pie()
pie_chart.title = 'Title!'
for r in results:
    pie_chart.add(r[1], r[0])
pie_chart.value_formatter = lambda x: "%.15f" % x
pie_chart.render_to_file('piechart.svg')

这会生成一个看起来像这样的饼图(如果我将鼠标悬停在“值 2”上):

PyGal 默认饼图

我遇到的问题是小切片。很难看到我在盘旋的是什么。在上面的示例中,这对于值 5 到 8 尤其明显,但即使在值 4 上,也很难分辨出哪个悬停在上面。有没有办法在工具提示中包含标签?

我找到的最接近的是value_formater,但这似乎在饼图中被忽略了(如上面的示例所证明的那样,工具提示中只有 2 位小数,尽管pie_chart.value_formatter = lambda x: "%.15f" % x有代码行)。

4

1 回答 1

1

解决方案是利用标签元数据信息。这要求将字典而不是单个值作为第二个参数传递给循环中的.add()in 。for

for r in results:
    pie_chart.add(r[1], [{'value': r[0], 'label': r[1]}])
于 2015-09-11T03:40:28.500 回答