1 回答

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
默認(rèn)情況下kde=True,kde 被標(biāo)準(zhǔn)化,使得曲線下的面積為 1。為了在同一圖中一起顯示,直方圖也將被標(biāo)準(zhǔn)化,以便所有條形的總面積之和為一。
使用 時(shí)kde=False,默認(rèn)直方圖將顯示頻率(每個(gè)箱的計(jì)數(shù)),這是更大的數(shù)字。如果將兩者顯示在具有相同軸的同一圖中,則歸一化直方圖不會(huì)消失,但會(huì)非常小。使用縮放工具,您可以驗(yàn)證它是否仍然存在。要查看兩者具有相同的尺寸,sns.distplot(..., kde=False, norm_hist=True)可以使用
您會(huì)注意到,兩個(gè)直方圖不使用相同的箱邊界。這些邊界是使用樣本數(shù)量以及各個(gè)樣本集的最小值和最大值來(lái)計(jì)算的。
要真正比較兩個(gè)直方圖,可以設(shè)置顯式的 bin,因此兩者都使用相同的 bin 邊界。
以下代碼和圖比較了比較直方圖的 3 種不同方法:
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
x1 = np.random.randn(100).cumsum()
x2 = np.random.randn(100).cumsum()
fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, figsize=(15, 4))
sns.distplot(a=x1, kde=False, ax=ax1)
sns.distplot(a=x2, ax=ax1)
ax1.set_title('one histogram without kde')
sns.distplot(a=x1, kde=False, norm_hist=True, ax=ax2)
sns.distplot(a=x2, ax=ax2)
ax2.set_title('setting norm_hist=True')
xmin = min(x1.min(), x2.min())
xmax = max(x1.max(), x2.max())
bins = np.linspace(xmin, xmax, 11)
sns.distplot(a=x1, kde=False, norm_hist=True, bins=bins, ax=ax3)
sns.distplot(a=x2, bins=bins, ax=ax3)
ax3.set_title('using the same bins')
plt.tight_layout()
plt.show()
添加回答
舉報(bào)