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

Matplotlib Histograms异常:部分条形缺失的解决求助

解决Matplotlib直方图条形缺失问题

问题原因

你遇到的条形缺失/显示异常,是因为bins=10的设置和你的整数型数据不匹配。你的final_tails存储的是10次抛硬币的正面次数,取值范围是0到10的整数(共11个可能值),但bins=10只会生成10个区间,导致部分整数对应的区间划分不合理,进而出现条形缺失的视觉效果。

解决方案

以下几种方法都可以解决这个问题:

方法1:手动设置适配整数的bins边界

直接指定bins的边界为每个整数的中间位置,让每个整数对应独立的条形:

plt.hist(final_tails, bins=np.arange(-0.5, 11.5))

这样每个整数x会被划分到[x-0.5, x+0.5]的区间内,所有可能的取值都会有对应的条形,不会出现缺失。

方法2:自动选择最优bins

让Matplotlib根据数据分布自动计算合适的bins数量,只需替换bins=10为bins='auto':

plt.hist(final_tails, bins='auto')

这种方式无需手动计算,能自动适配数据的分布情况。

方法3:根据唯一值数量设置bins

如果明确知道数据的唯一值数量,可以直接设置bins为唯一值的个数:

plt.hist(final_tails, bins=len(np.unique(final_tails)))

这里np.unique(final_tails)会返回所有可能的取值,len()得到11,刚好对应0到10的11个整数,生成的每个区间都会对应一个整数取值。

修改后的完整代码示例

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(123)
final_tails = []
for x in range(100) :
    tails = [0]
    for x in range(10) :
        coin = np.random.randint(0,2)
        tails.append(tails[x] + coin) 
    final_tails.append(tails[-1]) 
# 使用方法1的bins设置
plt.hist(final_tails, bins=np.arange(-0.5, 11.5))
plt.show()

内容的提问来源于stack exchange,提问作者CangZzz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:28:27