在matplot库和python中对条形图列表中的项目进行分组

在matplot库和python中对条形图列表中的项目进行分组,python,matplotlib,Python,Matplotlib,我想做一个条形图或柱状图,看看列表中的每个项目被表示了多少次。一些虚拟数据 mylist=[a,a,b,c,c,c,c,d,d] 我想要的是一个能反映(a=2,b=1,c=4等)的条形图 事实上,我有一个更长的列表,这不是手动操作。我开始创建一个“for循环”,将每个项目与前一个项目进行比较,如果与上一个项目不同,则创建一个新的列表,但即使这样也似乎很麻烦。必须有一个简单而优雅的方法来做到这一点。如果已经解决了这个问题,我很抱歉,在搜索时,我得到的结果要么太简单,要么太复杂。这被标记为如何计算列

我想做一个条形图或柱状图,看看列表中的每个项目被表示了多少次。一些虚拟数据

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

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

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

尝试使用以下方法:

from collections import Counter
mylist = [a,a,b,c,c,c,c,d,d]
Counter(mylist)
尝试使用以下方法:

from collections import Counter
mylist = [a,a,b,c,c,c,c,d,d]
Counter(mylist)

您所能做的只是迭代列表,并根据每个项目的频率更新字典。
例如:


您所能做的只是迭代列表,并根据每个项目的频率更新字典。
例如:

另一个解决方案是:

import collections
import matplotlib.pyplot as plt
figure = plt.figure(figsize=(8,6))

mylist = ['a','a','b','c','c','c','c','d','d']
co = collections.Counter(mylist)
plt.bar(range(len(co.keys())), list(co.values()), tick_label=list(co.keys()))
plt.xlabel('Items')
plt.ylabel('Frequency'), list(co.values()), tick_label=list(co.keys()))
输出

这只是另一种解决方案:

import collections
import matplotlib.pyplot as plt
figure = plt.figure(figsize=(8,6))

mylist = ['a','a','b','c','c','c','c','d','d']
co = collections.Counter(mylist)
plt.bar(range(len(co.keys())), list(co.values()), tick_label=list(co.keys()))
plt.xlabel('Items')
plt.ylabel('Frequency'), list(co.values()), tick_label=list(co.keys()))
输出


可能重复的可能重复的这正是我要找的!谢谢@newbieth这正是我想要的!谢谢@newbieth,他的作品也是。谢谢你给我看这个,我不知道计数器,但它似乎是一种方式。这也很有效。谢谢你给我看这个,我不知道计数器,但它似乎是一条路要走。