如何调整plt.hist参数实现两组直方图的重叠而非堆叠展示?
重叠分布直方图实现指南
问题根因
你当前代码生成堆叠展示效果的原因非常直接:两次调用plt.hist()时都开启了stacked=True参数。该参数的作用是将多组样本的直方图在同一横坐标区间做数值累加堆叠,完全不符合重叠对比分布的需求。
调整步骤
- 移除两个直方图配置中的
stacked=True参数,让两组直方图独立在同一坐标系中绘制 - 保留原有
alpha=0.5的半透明设置,让两组色块重叠的区域自然融合,不会完全遮挡对方的分布轮廓 - 可补充
edgecolor='white'的边缘配置,给每个直方图块加上细白边界,避免重叠区域颜色混杂,让两类分布的峰值、区间边界更易分辨
调整后可直接运行的代码
plt.hist( all_loss[0][-1][clean_idx].numpy(), bins=20, density=True, alpha=0.5, facecolor="cornflowerblue", edgecolor="white", label='clean' ) plt.hist( all_loss[0][-1][noisy_idx].numpy(), bins=20, density=True, alpha=0.5, facecolor="pink", edgecolor="white", label='noisy' ) # 显示类别对应图例 plt.legend()
实用注意事项
- 两个直方图的
bins参数必须保持一致,才能保证横坐标区间完全对齐,避免出现分箱错位、对比无意义的问题 - 透明度设置在0.3-0.6区间是重叠直方图的最佳取值区间,既能看清各自的分布轮廓,又不会让重叠区域过于杂乱
内容的提问来源于stack exchange,提问作者Qiwei Wang
相关产品推荐
相关产品推荐

