如何在Matplotlib中使用指定Bins和预计算Values绘制直方图?
用条形图实现可变区间的预计算百分比直方图
你可以直接使用matplotlib的bar()函数模拟直方图效果,通过自定义每个条形的宽度来匹配可变的bin区间,无需原始数据集。具体实现如下:
- 计算每个bin的宽度:从给定的bins数组中,逐个计算相邻边界的差值,得到每个区间的实际宽度。
- 绘制自定义宽度的条形图:将bin的左边界作为条形的x位置,预计算的百分比作为高度,刚才算出的区间宽度作为条形宽度,同时设置边缘对齐,让条形和bin区间完全对应。
完整代码示例:
import matplotlib.pyplot as plt # 你的预定义数据 values = [0.5, 0.25, 0.25] # 每个bin的百分比高度 bins = [0.0, 1.0, 5.0, 7.0] # 区间边界 # 计算每个bin的宽度 bin_widths = [bins[i+1] - bins[i] for i in range(len(values))] # 绘制模拟直方图 plt.bar( x=bins[:-1], # 取前n个bin左边界作为x坐标 height=values, width=bin_widths, align='edge', # 条形左边缘与bin左边界对齐,贴合直方图逻辑 edgecolor='black' # 添加边框,更贴近直方图视觉样式 ) # 配置图表细节 plt.xlabel('区间范围') plt.ylabel('百分比') plt.title('可变区间的预计算百分比直方图') plt.xticks(bins) # 设置x轴刻度为所有bin边界,清晰展示区间划分 plt.show()
这段代码生成的图表和标准直方图视觉一致,完美适配你拥有的预计算数据,同时支持任意宽度的bin区间。
内容的提问来源于stack exchange,提问作者Micah Pearce
相关产品推荐
相关产品推荐

