python - 如何在 Python 3.4 中使用 dict_values 生成饼图?

标签 python counter pie-chart

我想要使用 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 转换为字符串或数字,因为用于生成饼图的函数只接受字符串或数字?

最佳答案

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

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)

关于python - 如何在 Python 3.4 中使用 dict_values 生成饼图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25950695/

相关文章:

python - 停止动画——康威的生命游戏

python - 将列表中的整数与其索引相乘

javascript - php/html显示从特定数据开始的自动周计数器

Python 将 Counter 附加到 Counter,就像 Python 字典更新一样

javascript - D3饼图未更新

reporting-services - 如何在SSRS饼图中进行百分比和计数

确保 python 2 和 3 中的 unicode 的 Pythonic 方法

python - golang和python zlib的区别

python-3.x - 有什么方法可以找到多个图像的边界并单独裁剪它们?

javascript - Flot 库中的饼图 - 如何按降序排列图例?