Using PyGal, how can I embed a label on the pie chart itself on hover?

我的梦境 提交于 2019-12-10 10:35:16

问题


Using the code below, I can generate a pie chart. When I hover over a slice of the pie, it shows the percentage that slice occupies.

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')

This produces a pie chart that looks like this (if I hover over "Value 2"):

The problem I have is with the small slices. It's very hard to see what I am hovering over. In the example above, this is especially obvious with Values 5 through 8, but even on Value 4, it's hard to tell which one is being hovered above. Is there a way to include the label in the tool tip as well?

The closest I've found is value_formater, but this seems to be ignored in pie charts (as evidenced by the example above only having 2 decimal places in the tooltip, despite the pie_chart.value_formatter = lambda x: "%.15f" % x line of code).


回答1:


The solution to this was to utilize the label metadata information. This requires that a dictionary, instead of a single value, be passed as the second parameter to the .add() in the for loop.

for r in results:
    pie_chart.add(r[1], [{'value': r[0], 'label': r[1]}])


来源:https://stackoverflow.com/questions/31464555/using-pygal-how-can-i-embed-a-label-on-the-pie-chart-itself-on-hover

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!