如何在直方图柱子顶部添加数值并保持柱子分离?
解决直方图柱子分离及添加顶部频率数值的方案
关键修改点
- 实现柱子分离:在
plot(kind='hist')中加入rwidth参数(控制柱子宽度占区间的比例,比如设为0.8,剩余空间就是柱子间的空隙),同时可通过bins指定区间数量,优化分离视觉效果。 - 添加顶部频率数值:先获取直方图的计数与区间信息,再循环在每个柱子顶部居中位置标注对应频率。
修改后的完整代码
import matplotlib.pyplot as plt import numpy as np # 绘制直方图并获取计数、区间、柱子对象 n, bins, patches = df_dm2["resolution"].plot(kind='hist', color='blue', edgecolor='black', linewidth=1.2, rwidth=0.8, bins=15) plt.ylabel('Frequency') plt.xlabel('Resolution (m)') plt.title('Region DM2 Frame Resolution Frequency') # plt.text( .92, 3.5, r'$\mu=1.092531 ,\ \sigma=0.091098$') # plt.xticks(np.arange(0, 2, 0.2)) plt.yticks(np.arange(0, 200,25)) # 给每个柱子顶部添加频率数值 for count, patch in zip(n, patches): height = patch.get_height() plt.text(patch.get_x() + patch.get_width()/2, height, f'{int(count)}', ha='center', va='bottom') plt.savefig('histogram_dm2.png',dpi=72, bbox_inches='tight') plt.show()
细节说明
rwidth=0.8:让柱子宽度占区间宽度的80%,剩下的20%形成柱子间的空隙,实现分离效果。bins=15:可根据数据分布调整区间数量,让柱子分离的视觉效果更贴合数据特征。- 文本标注部分:通过遍历柱子对象和对应计数,计算柱子顶部中心位置,精准添加频率数值(如需保留小数,可修改格式化字符串为
f'{count:.1f}')。
内容的提问来源于stack exchange,提问作者user16893438
相关产品推荐
相关产品推荐

