Seaborn:在同一轴上排列2个distplots

时间:2018-05-15 19:45:30

标签: python-3.x matplotlib seaborn

我试图创建两个在相同轴上重叠的distplots,但它们似乎是偏移的。我该如何调整它以使它们的重叠完全一致?有关我遇到的问题,请参阅下面的图片链接。

plt.figure(figsize=(10,8))
ax1 = sns.distplot(loans['fico'][loans['credit.policy']==1], bins= 10, kde=False, hist_kws=dict(edgecolor='k', lw=1))
ax2 = sns.distplot(loans['fico'][loans['credit.policy']==0], bins= 10, color='Red', kde=False, hist_kws=dict(edgecolor='k', lw=1))

ax1.set_xlim([600, 850])
ax2.set_xlim([600, 850])

Problematic result

1 个答案:

答案 0 :(得分:3)

这些情节并没有排好,因为Seaborn(好吧,幕后的Matplotlib)正在制定最好的方法,为你传递给它的每组数据提供十个箱子。但这两套可能没有相同的范围。

您可以提供一个序列作为bin参数,它定义了bin的边缘。假设您有numpy可用,您可以使用其linspace函数轻松地从数据中的最小值和最大值创建此序列。

plt.figure(figsize(10,8))

bins = np.linspace(min(loans['fico']), max(loans['fico']), num=11)

ax1 = sns.distplot(loans['fico'][loans['credit.policy']==1], bins=bins, 
                   kde=False, hist_kws=dict(edgecolor='k', lw=1))
ax2 = sns.distplot(loans['fico'][loans['credit.policy']==0], bins=bins, 
                   color='Red', kde=False, hist_kws=dict(edgecolor='k', lw=1))

然后你不应该设置x限制。

包含一些随机生成的值的示例: enter image description here