【问题标题】:how to generate pie chart using dict_values in Python 3.4?如何在 Python 3.4 中使用 dict_values 生成饼图?
【发布时间】:2014-09-20 16:07:18
【问题描述】:

我想要使用Counter 库获得的列表中数字的频率。另外,我分别使用keys = Counter(list).keys()values = Counter(list).values() 获得了键和值,其中list 是数字列表。它们的输出格式如下:

dict_keys(['0.2200', '0.2700', '0.6200', '0.3000', '0.2500', '0.3400', '0.5600', '0.3900', '0.5400', '0.5500', '0.7500', '0.4100', '0.2800', '0.4200', '0.3800', '0.6600', '0.2000', '0.5200', '0.7200'])

并且, dict_values([15, 3, 6, 13, 6, 3, 1, 3, 3, 5, 4, 14, 8, 5, 3, 5, 11, 3, 9])

现在我想使用键和值生成一个饼图,我通过以下方式完成了它:

import matplotlib.pyplot as pyplot
pyplot.axis("equal")
pyplot.pie(float(values),labels=float(keys),autopct=None)
pyplot.show()

但是,我得到的错误是:

TypeError: float() argument must be a string or a number, not 'dict_values'

由于用于生成饼图的函数只接受字符串或数字,有什么方法可以将dict_values 转换为字符串或数字?

【问题讨论】:

    标签: python counter pie-chart


    【解决方案1】:

    您需要遍历这些值并将它们单独转换为浮点数:

    pyplot.pie([float(v) for v in values], labels=[float(k) for k in keys],
               autopct=None)
    

    [expression for target in iterable] 被称为列表推导并产生一个列表对象。

    我不会创建Counter() 两次;只需创建一次并重复使用:

    counts = Counter(yourlist)
    pyplot.pie([float(v) for v in counts.values()], labels=[float(k) for k in counts],
               autopct=None)
    

    【讨论】:

    • 非常感谢。您的解决方案完全按照我需要的方式生成派。我会记住,从现在开始我必须单独转换这些值。再次感谢:)
    猜你喜欢
    • 2013-12-11
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多