Python直方图区间(bins)配置异常:1000间隔设置问题求助
修复直方图绘制异常的问题
你的代码存在两个关键问题导致直方图显示异常,同时你的bins设置是正确的,以下是具体修复建议:
问题分析
- 数据类型不匹配:列表
v中的元素是字符串类型,matplotlib的hist函数无法对字符串进行频率统计,这是直方图异常的核心原因。 - API使用错误:
plt.set(ylabel='Frequency')不是设置纵轴标签的正确方法,会引发报错。 - 你的
bins设置是正确的:np.linspace(0, 10000, 11)生成了0、1000、2000……10000共11个分界点,恰好划分出10个间隔为1000的区间,完全符合你的需求。
修复后的完整代码
import matplotlib.pyplot as plt import numpy as np # 将字符串列表转换为浮点型数组 v = np.array([ '1302.42', '7.85422', '21.0631', '6956.37', '10000', '10000', '7312.88', '7708.98', '8421.12', '7419.41', '1952.47', '6762.42', '10000', '4057.73', '2051.06', '10000' ], dtype=np.float64) plt.hist(v, bins=np.linspace(0, 10000, 11)) plt.xticks(rotation=90) plt.ylabel('Frequency') # 正确设置纵轴标签 plt.show()
关键修复点说明
- 转换数据类型:使用
np.array配合dtype=np.float64将所有字符串数值转为浮点型,确保直方图能正确统计每个区间的数值频率。 - 修正纵轴标签:替换错误的
plt.set为plt.ylabel(),这是matplotlib设置纵轴标签的标准调用方式。
内容的提问来源于stack exchange,提问作者Natasha
相关产品推荐
相关产品推荐

