Skip to main content
 首页 » 编程设计

使用字符串绘制 Python 直方图

2025年05月04日26yyy_WW

我正在尝试创建一些月度销售数据的直方图。我将数据作为有序字典提供,如下所示 sales_dict = collections.OrderedDict([('Jan', 0), ('Feb', 0), ('Mar', 0), ('Apr ', 0), ('五月', 0), ('六月', 0), ('七月', 0), ('八月', 11), ('九月', 2), ('十月', 2), ('十一月', 0), ('十二月', 0)])

我试过使用 pyplot 和 pylab 但没有成功。我希望我的直方图在 x 轴上有月份名称,在 y 轴上有销售数量。我试过:

import pylab 
from random import randint 
 
fig_num = randint(1,10000) 
 
pylab.figure(fig_num) 
pylab.hist(sales_dict.keys(),weights=data_dict.values(),bins=range(50)) 
pylab.show() 

和

import matplotlib.pyplot as plt 
 
val, weight = zip(*[(k, v) for k,v in sales_dict.items()]) 
plt.hist(val,weights=weight) 
plt.xlabel(x_label) 
plt.ylabel(y_label) 
plt.title(title) 
plt.grid(True) 
 
plt.show() 

在这两种情况下我都得到错误:“权重应该与 x 具有相同的形状”。我不熟悉 python 的大多数绘图工具,但我想知道是否因为我的字典中的键是字符串而不是数字?如有任何澄清,我们将不胜感激!

请您参考如下方法:

我不知道 plt.hist 是在这里使用的正确函数。相反,我会使用 plt.bar 和 tick_labels 参数来用月份标记绘图:

centers = range(len(sales)) 
plt.bar(centers, sales.values(), align='center', tick_label=sales.keys()) 
plt.xlim([0, 11]) 

这给出: