Python seaborn.distplot 返回计数而不是概率
Python seaborn.distplot returning count instead of probability
我有一个pandas
系列x
:
0 -0.000069
1 -0.000059
2 -0.000025
3 -0.000021
4 -0.000021
...
1036 0.000032
1037 0.000033
1038 0.000052
1039 0.000055
1040 0.000092
Name: c, Length: 1041, dtype: float64
我想用直方图绘制概率密度函数,其中我使用了 seaborn.distplot
:
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(x, hist=True, kde=True, bins=100,
hist_kws={'edgecolor':'black', 'color': 'r'},
kde_kws={'linewidth': 1, 'color': 'b'})
plt.xlim(-0.00002, 0.00002)
plt.ylim(ymin=0)
plt.xlabel("x")
plt.ylabel("probability")
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
plt.show()
结果得到下图:
如图所示,纵轴表示计数,但我想要(并且从这段代码中预期)概率。我很困惑,因为相同的代码适用于另一个 pandas
系列。例如,使用具有不同系列(和不同标签等)的相同代码,我能够生成以下正确数字:
知道为什么此代码不适用于我的第一个系列,and/or 可能的解决方案吗?
可以说,"problem" 是您将 y 轴标记为 "probability" 而 不是 概率的事实。概率是曲线下的面积(等于1)。
在您的第一个图中,您的密度非常大,但 x 值非常小,因此两者的乘积有可能保持一致。有关详细信息,请参阅 probability density function。
我会编辑你的 plt.ylabel("probability")
并将其标记为其他内容(即正确的指示符)或根本不标记它。
我建议使用 plt.ylabel("probability density")
。
我有一个pandas
系列x
:
0 -0.000069
1 -0.000059
2 -0.000025
3 -0.000021
4 -0.000021
...
1036 0.000032
1037 0.000033
1038 0.000052
1039 0.000055
1040 0.000092
Name: c, Length: 1041, dtype: float64
我想用直方图绘制概率密度函数,其中我使用了 seaborn.distplot
:
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(x, hist=True, kde=True, bins=100,
hist_kws={'edgecolor':'black', 'color': 'r'},
kde_kws={'linewidth': 1, 'color': 'b'})
plt.xlim(-0.00002, 0.00002)
plt.ylim(ymin=0)
plt.xlabel("x")
plt.ylabel("probability")
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
plt.show()
结果得到下图:
如图所示,纵轴表示计数,但我想要(并且从这段代码中预期)概率。我很困惑,因为相同的代码适用于另一个 pandas
系列。例如,使用具有不同系列(和不同标签等)的相同代码,我能够生成以下正确数字:
知道为什么此代码不适用于我的第一个系列,and/or 可能的解决方案吗?
可以说,"problem" 是您将 y 轴标记为 "probability" 而 不是 概率的事实。概率是曲线下的面积(等于1)。
在您的第一个图中,您的密度非常大,但 x 值非常小,因此两者的乘积有可能保持一致。有关详细信息,请参阅 probability density function。
我会编辑你的 plt.ylabel("probability")
并将其标记为其他内容(即正确的指示符)或根本不标记它。
我建议使用 plt.ylabel("probability density")
。