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

如何在直方图柱子顶部添加数值并保持柱子分离?

解决直方图柱子分离及添加顶部频率数值的方案

关键修改点

  • 实现柱子分离:在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:00:52