You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Matplotlib绘制的直方图所有柱子高度均为0.10的原因?

问题原因与修复方案

你遇到的柱子高度一致的问题,根源在于传入直方图的数组维度错误:你把np_lst包裹成了二维数组(a = np.array([np_lst]),shape为(1,10)),而Matplotlib的hist函数处理二维数组时,默认会将每一列视为独立的数据集统计——这相当于传入了10个仅含单个数值的小数据集,导致统计逻辑异常,最终出现所有柱子高度相同的错误结果。

修复方法

只需将数组转为一维即可,有两种方式:

方式1:直接使用一维数组

无需额外包裹np_lst,直接创建一维数组传入:

import pandas as pd
import numpy as np 
from matplotlib import pyplot as plt

np_lst = [33.48722283633526, 16.015345601144418, 7.9556538136419785, 7.146108329540282, 7.087586969243774, 6.9575395019182, 6.01144417712465, 5.939918070095585, 5.5530268548020025, 3.8461538461538463]

# 创建一维数组
a = np.array(np_lst)

fig, ax = plt.subplots(figsize = (20,7))
ax.hist(a, bins = [0,10,20,30,40])
plt.show()

方式2:展平二维数组(若需保留原二维结构)

如果因其他需求必须使用二维数组,用flatten()将其转为一维后传入:

ax.hist(a.flatten(), bins = [0,10,20,30,40])

修正后的预期结果

修复后,直方图柱子高度会对应各区间的实际数据数量:

  • 0-10区间:8个数据,柱子高度为8
  • 10-20区间:1个数据,柱子高度为1
  • 20-30区间:0个数据,柱子高度为0
  • 30-40区间:1个数据,柱子高度为1

内容的提问来源于stack exchange,提问作者Jean-Paul Azzopardi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:10:33