matplotlib如何绘制x值为每个y值频率的图形?

2024-05-13 23:18:31 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我想画一张每个月出生人数的图表,我有一个如下的列表:

[ {"bob": "January"},{"Peter":"February"},{"Mary":"March"}, {"John":"March"}, {"Sully": "March"}, {"Kai":"April"} ,{"Jerry": "February"}, {"Polly":"may"}, {"Nina": "June"}, {"Mic": "July"}, {"Paul": "August"}, {"Ferry": "January"}]

用x轴上的月份和y轴上的出生人数来绘制图表,最好的方法是什么?我有月份的y值,但是x值有问题。我必须先看一下清单并计算每个月的频率吗?我将与一个更大的清单与超过一千个项目,需要一个有效的解决方案


Tags: 列表图表johnpeterbobmarchmary月份
1条回答
网友
1楼 · 发布于 2024-05-13 23:18:31

您可以使用^{}首先展平词典列表,然后应用^{}模块获取每个月的名称频率。然后,您可以提取月份名称和相应的频率,并使用条形图绘制它们。下面是使用您提供的数据的示例答案。如果要在x轴上对月份名称进行排序,可以使用提供的答案here

from collections import Counter, ChainMap
import matplotlib.pyplot as plt

figure = plt.figure(figsize=(8, 6))

dictionary = [{"bob": "January"},{"Peter":"February"},{"Mary":"March"}, {"John":"March"}, 
                  {"Sully": "March"}, {"Kai":"April"} ,{"Jerry": "February"}, {"Polly":"may"}, 
                  {"Nina": "June"}, {"Mic": "July"}, {"Paul": "August"}, {"Ferry": "January"}]

dict_flat = ChainMap(*dictionary)

frequency = Counter(dict_flat.values()).most_common()
x, y = zip(*frequency)

plt.bar(x, y, width=0.5)
plt.show()

enter image description here

相关问题 更多 >