matplotlib 什么是海运分布图中的y轴?

iaqfqrcu  于 2022-11-24  发布在  其他
关注(0)|答案(3)|浏览(204)

我有一些几何分布的数据。当我想查看它时,我使用

sns.distplot(data, kde=False, norm_hist=True, bins=100)

其结果是一幅图:

然而,箱高度之和不等于1,这意味着y轴不显示概率,这是不同的。如果我们使用

weights = np.ones_like(np.array(data))/float(len(np.array(data)))
plt.hist(data, weights=weights, bins = 100)

y轴将显示概率,因为面元高度总计为1:

这里可以看得更清楚:假设我们有一个列表

l = [1, 3, 2, 1, 3]

我们有两个1、两个3和一个2,因此它们各自的概率为2/5、2/5和1/5。当我们使用具有3个区间的海运历史图时:

sns.distplot(l, kde=False, norm_hist=True, bins=3)

我们得到:

如您所见,第一个和第三个bin的总和为0.6+0.6=1.2,这已经大于1,因此y轴不是概率。当我们使用

weights = np.ones_like(np.array(l))/float(len(np.array(l)))
plt.hist(l, weights=weights, bins = 3)

我们得到:

y轴是概率,如预期的0.4+0.4+0.2=1。
这两种情况下的bin数量对于每种情况下使用的两种方法都是相同的:100个面元用于几何分布的数据,3个面元用于具有3个可能值的小阵列l。

**我的问题是:**在使用norm_hist=True调用的seborn distplot中,y轴的含义是什么?

mkh04yzy

mkh04yzy1#

documentation

规范历史:bool,可选

如果为True,直方图高度显示密度而不是计数。如果绘制的是KDE或拟合密度,这是隐含的。
因此,您还需要考虑箱宽度,即计算曲线下的面积,而不仅仅是箱高度的总和。

dbf7pr2w

dbf7pr2w2#

x轴是变量的值,就像直方图一样,但y轴到底代表什么?

**ANS-〉**密度图中的y轴是核密度估计的概率密度函数。但是,我们需要注意指定这是概率密度而不是概率。不同之处在于概率密度是x轴上每单位的概率。要转换为实际概率,我们需要求出x轴上某个特定区间的曲线下面积。有点令人困惑的是,因为这是概率密度而不是概率,y轴可以取大于1的值。密度图的唯一要求是曲线下的总面积积分为1。我通常倾向于认为y-在密度图上的轴上显示为一个值,仅用于不同类别之间的相对比较。

https://towardsdatascience.com/histograms-and-density-plots-in-python-f6bda88f5ac0的参考

2g32fytz

2g32fytz3#

这段代码将帮助您创建类似以下的内容:

sns.set_style("whitegrid")
ax = sns.displot(data=df_p,
                 x='Volume_Tonnes', kind='kde', fill=True, height=5, aspect=2)
# Here you can define the x limit    
ax.set(xlim=(-50,100))
ax.set(xlabel = 'Volume Tonnes', ylabel = 'Probability Density')
ax.fig.suptitle("Volume Tonnes Distribution",
                fontsize=20, fontdict={"weight": "bold"})
plt.show()

相关问题