【问题标题】:Using PyGal, how can I embed a label on the pie chart itself on hover?使用 PyGal,如何在悬停时在饼图本身上嵌入标签?
【发布时间】:2015-07-16 21:08:22
【问题描述】:

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

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”上):

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

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

【问题讨论】:

  • 这很奇怪。我已经试用了您的代码,我得到了 15 个小数点和标签 (screenshot)。也许您设置了一些其他选项,或者您的 HTML 中有一些东西?..
  • @P_S,你可能有更新版本的 Pygal。从我发布问题到现在,它似乎达到了 2.0 版。
  • 我愿意。你试过更新吗?问题还在吗?
  • 我使用相同的代码并在网络浏览器中打开了 piechart.svg。当我将鼠标悬停在它上面时,我似乎看不到任何东西。我应该使用任何特定的应用程序来打开它吗?

标签: python pygal


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2022-09-29
    • 1970-01-01
    相关资源
    最近更新 更多