python - matplot lib和python中的条形图列表中的项目分组
问题描述
我想制作一个条形图或饼图来查看列表中的每个项目被表示了多少次。一些虚拟数据...
我的列表 = [a,a,b,c,c,c,c,d,d]
我想要的是一个反映(a = 2,b = 1,c = 4 等...)的条形图
实际上,我的清单要长得多,而且不需要手动操作。我开始制作一个“for 循环”,将每个项目与前一个项目进行比较,如果与上一个项目不同,则创建一个新列表,但即使这样看起来也很麻烦。必须有一种简单而优雅的方式来做到这一点。如果这个问题已经得到解决,我很抱歉,在搜索时我得到的结果要么太简单,要么太复杂。这被标记为如何计算列表中的元素的重复项,这是不同的,因为它还解决了图形问题。
解决方案
您可以做的只是遍历列表并使用每个项目的频率更新字典。
例子:
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()
推荐阅读
- javascript - 更新数组上的状态,除了该数组中的一个对象 ReactJS
- c++ - 在 C++ 中将 AVRational 数转换为 Double 的最佳方法
- php - PHP将查询字符串拆分为带有键/值的数组
- sql - 是否有任何 NHibernate 等效于 sql 'left' 函数?
- python - 如何修复:NameError:未定义名称“密码”
- php - 为什么使用 PHP 将 shell_exec 转换为变量不起作用?
- spring-boot - 为什么我的 mockMvc 没有提交任何内容?
- react-native - 配置 jetifier 后的 react-native run-android
- azure - 用于虚拟环境编排和生命周期管理的基于 Azure 云的管理系统
- javascript - 我有一个与 Visual Studio 测试页 .asmx 配合使用的 Web 服务 .asmx,但向客户端返回 500