首页 > 解决方案 > matplot lib和python中的条形图列表中的项目分组

问题描述

我想制作一个条形图或饼图来查看列表中的每个项目被表示了多少次。一些虚拟数据...

我的列表 = [a,a,b,c,c,c,c,d,d]

我想要的是一个反映(a = 2,b = 1,c = 4 等...)的条形图

实际上,我的清单要长得多,而且不需要手动操作。我开始制作一个“for 循环”,将每个项目与前一个项目进行比较,如果与上一个项目不同,则创建一个新列表,但即使这样看起来也很麻烦。必须有一种简单而优雅的方式来做到这一点。如果这个问题已经得到解决,我很抱歉,在搜索时我得到的结果要么太简单,要么太复杂。这被标记为如何计算列表中的元素的重复项,这是不同的,因为它还解决了图形问题。

标签: pythonmatplotlib

解决方案


您可以做的只是遍历列表并使用每个项目的频率更新字典。
例子:

import matplotlib.pyplot as plt

mylist = ['a','a','b','c','c','c','c','d','d']

#create a dictionary with the frequency of each item
frequencies = {}
for item in mylist:
    if item in frequencies:
        frequencies[item]+=1
    else:
        frequencies[item] = 1

# plot it
plt.figure()
plt.bar(frequencies.keys(), frequencies.values())
plt.show()

推荐阅读