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

已知区间内数值数量,如何用Python绘制直方图?

用区间计数绘制直方图的方法

如果已经掌握每个区间的数值数量,无需还原原始数据就能快速画出直方图,以下是两种实用方案:

方法一:直接用条形图模拟直方图(推荐)

利用已知的区间计数,通过plt.bar绘制条形图,将宽度设为区间步长即可完美模拟直方图效果:

import numpy as np
import matplotlib.pyplot as plt

amounts = np.array([23, 7, 18, 5])
# 定义区间左边界:对应[0,1)、[1,2)等区间的左端点
bin_left_edges = np.arange(0, 4)
# 绘制条形图,宽度设为区间步长1,添加边框区分区间
plt.bar(bin_left_edges, amounts, width=1, edgecolor='black')
# 设置轴标签和标题
plt.xlabel('数值区间')
plt.ylabel('数量')
plt.title('区间计数直方图')
# 调整x轴刻度,显示对应的区间范围
plt.xticks(bin_left_edges + 0.5, ['[0,1)', '[1,2)', '[2,3)', '[3,4)'])
plt.show()

这种方法无需生成大量重复数据,效率极高,尤其适合计数数据量较大的场景。

方法二:还原模拟数据后绘制传统直方图

如果需要贴合传统直方图的绘制逻辑,可以先将计数还原为带重复值的模拟原始数据,再用plt.hist绘制:

import numpy as np
import matplotlib.pyplot as plt

amounts = np.array([23, 7, 18, 5])
# 取每个区间的中点作为代表值(也可选取区间内任意值)
bin_midpoints = np.array([0.5, 1.5, 2.5, 3.5])
# 重复每个中点对应次数,生成模拟原始数据
simulated_data = np.repeat(bin_midpoints, amounts)
# 定义区间边界
bins = np.arange(0, 5, 1)
# 绘制直方图
plt.hist(simulated_data, bins=bins, edgecolor='black')
plt.xlabel('数值区间')
plt.ylabel('数量')
plt.title('模拟原始数据的直方图')
plt.show()

这种方法适合需要基于原始数据做后续分析的场景,但如果计数规模很大,会占用较多内存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:31:39