Python 如何在seaborn距离图中获得分布峰值y的X轴值?

Python 如何在seaborn距离图中获得分布峰值y的X轴值?,python,pandas,numpy,matplotlib,seaborn,Python,Pandas,Numpy,Matplotlib,Seaborn,所以我有一个频率分布图,看起来像这样: 我需要对应于y值峰值的x值。 我怎样才能得到绘图代码 seaborn.distplot('TheSeries',bins = 30, ax=axes[0][1]) 有人能解释一下我如何获得这种情况和类似情况下的相应值吗?您可以从ax.lines[-1]提取kde曲线的坐标,并使用np.argmax()找到曲线的模式 注意:最新seaborn版本中的distplot已被弃用。这里的histplot将替换为kde=True 从matplotlib导入pyp

所以我有一个频率分布图,看起来像这样:

我需要对应于y值峰值的x值。 我怎样才能得到绘图代码

seaborn.distplot('TheSeries',bins = 30, ax=axes[0][1])

有人能解释一下我如何获得这种情况和类似情况下的相应值吗?

您可以从
ax.lines[-1]
提取kde曲线的坐标,并使用
np.argmax()
找到曲线的模式

注意:最新seaborn版本中的distplot已被弃用。这里的
histplot
将替换为
kde=True

从matplotlib导入pyplot作为plt
将numpy作为np导入
导入seaborn作为sns
样本数=np.随机数随机数(300)**2*50
ax=sns.histplot(样本,bin=30,kde=True,color='skyblue')
kdeline=最大线[0]
xs=kdeline.get_xdata()
ys=kdeline.get_ydata()
模式_idx=np.argmax(ys)
ax.vlines(xs[mode_idx],0,ys[mode_idx],color='tomato',ls=''--',lw=2)
plt.show()

我有。再次感谢。还有什么方法可以得到相同kde的峰值,但是去掉了+3 z值的异常值?如果去掉异常值,我想峰值应该保持在相同的位置。也许你想限制x轴的范围,例如,
ax.setxlim(-1300)
?是的。我试图找到与连续分布的峰值(频率或发生率)相对应的x值。数据有适度的高度倾斜,我有多个这样的分布(它们的范围差异很大,总样本量也不同)因此,尝试为峰值建立一个95%的置信区间。异常值将标准偏差改变到足够大的程度。顺便问一下,异常值会对kde的精益产生很大影响吗?峰值的
x
不应该改变,
y
会稍微高一点(kde的积分和为1,因此值越少,剩余值的权重就越大)。平均值和中位数会有所变化,这取决于离群值的距离和数量。要计算置信区间,可能不应该删除离群值(除非您确信它们与测量误差有关)。