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

如何使Seaborn中两个distplot在同一坐标轴上精确重叠?

解决Seaborn distplot直方图偏移重叠问题

嘿,我来帮你搞定这个直方图偏移的问题!你现在遇到的情况是两个distplot的直方图没有对齐,原因其实很简单——虽然你设置了相同的bins数量,但两个数据集的数值范围对应的bin边界没有统一,导致它们的柱子错开了。

要让两个直方图精确重叠,关键是手动指定统一的bins区间,而不是只给bins的数量。这样两个直方图会使用完全相同的分组边界,自然就能对齐了。

修改后的代码如下:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(10,8))
# 手动设置统一的bins区间,从600到855(左闭右开,所以要到855才能包含850),步长25
bins = np.arange(600, 855, 25)
# 第一个直方图使用统一的bins
ax1 = sns.distplot(loans['fico'][loans['credit.policy']==1], bins=bins, kde=False, hist_kws=dict(edgecolor='k', lw=1))
# 第二个直方图同样使用这个bins
ax2 = sns.distplot(loans['fico'][loans['credit.policy']==0], bins=bins, color='Red', kde=False, hist_kws=dict(edgecolor='k', lw=1))
# 统一设置x轴范围,其实这里因为bins已经限定了范围,这一步可以省略,但保留也没问题
plt.xlim([600, 850])
plt.show()

为什么原来的代码会偏移?

原来你只设置了bins=10,Seaborn会自动根据每个数据集的最小值和最大值来计算bin的边界。两个数据集的极值可能略有不同,导致生成的bin区间位置不一样,最终就出现了柱子错开的情况。手动指定bins的区间后,两个直方图会严格使用相同的分组规则,就能完美重叠啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:03:09