【问题标题】:How Can i Get the X axis Value for the Distributions peak y value in a seaborn distplot?如何获取 seaborn distplot 中分布峰值 y 值的 X 轴值?
【发布时间】:2021-03-06 22:10:30
【问题描述】:

所以我有一个如下所示的频率分布图:

image of the Desired point

我需要与 y 值的峰值对应的 x 值。 如何获取绘图代码?

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

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

【问题讨论】:

    标签: python pandas numpy matplotlib seaborn


    【解决方案1】:

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

    请注意,在最新的 seaborn 版本中,distplot 已被弃用。这里histplotkde=True 将是它的替代品。

    from matplotlib import pyplot as plt
    import numpy as np
    import seaborn as sns
    
    samples = np.random.randn(300) ** 2 * 50
    ax = sns.histplot(samples, bins=30, kde=True, color='skyblue')
    kdeline = ax.lines[0]
    xs = kdeline.get_xdata()
    ys = kdeline.get_ydata()
    mode_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.set_xlim(-1, 300)?
    • 是的。我试图找到与连续分布的峰值(就频率或出现率而言)相对应的 x 值。数据是中度偏斜的,我有多个这样的分布(它们的范围差异很大,它们的总样本量也不同)。因此尝试为峰值建模 95% 的置信区间范围。
    • 异常值在一定程度上改变了标准偏差。顺便问一下异常值对kde的精益有很大影响吗?
    • 峰值的x 根本不应该改变,y 会稍微高一点(kde 的积分总和为 1,所以更少的值会多一点每个剩余值的权重)。平均值和中位数会有所变化,具体取决于离群值的距离和数量。要计算置信区间,您可能不应该删除异常值(除非您确信它们与测量误差有关)。
    猜你喜欢
    • 2017-08-22
    • 2017-09-19
    • 1970-01-01
    • 2020-04-20
    • 2019-10-11
    • 2019-01-11
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多