【问题标题】:How to base seaborn boxplot whiskers on percentiles?如何将seaborn boxplot胡须基于百分位数?
【发布时间】:2018-05-28 18:22:22
【问题描述】:

我使用箱线图来显示组间值分布的差异。较低 (25) 和较高 (75) 百分位数和中位数表示组间的分布和主要差异。然而,晶须不太清晰。默认情况下,在 matlibplot 或 seaborn 中,箱线图的胡须是内四分位数范围 (IQR) 的倍数(默认值:1.5)的表示,这是内框覆盖的值的范围。超出此范围的点将被识别为异常值。 seaborn 和 matlibplot 都有相同的命令来改变胡须的位置:

whis : float, 
Proportion of the IQR past the low and high quartiles to extend the plot whiskers.Points outside this range will be identified as outliers.

例如:

boxplots = ax.boxplot(myData, whis=1.5)

另外,matlibplot 还允许将胡须基于百分位数。这更适合我试图用我的数据讲述的故事。例如:

boxplots = ax.boxplot(myData, whis=[5, 95])

与 matlibplot 相比,whis=[5, 95] 在 Seaborn 中不起作用。现在我正在寻找基于百分位数定义 Seaborn 中胡须的方法。

我的第一个想法是根据百分位数从 matlibplot 中获取晶须的值,并找到相应的比例 IQR 晶须值。这就是我所做的:

for w in np.arange(0.00,2.00, 0.01):    
        fig, ax = plt.subplots(ncols=2, nrows=1,figsize=(8, 6))
        bp = ax[0].boxplot(myData, whis=[5, 95])
        ax[0].set_xlabel('bp')
        ap = ax[1].boxplot(myData, whis=w)
        ax[1].set_xlabel('ap')

        r = 3

        alo =  (np.round(bp['whiskers'][0].get_ydata(), r))
        blo =  (np.round(ap['whiskers'][0].get_ydata(), r))
        ahi =  (np.round(bp['whiskers'][1].get_ydata(), r))
        bhi =  (np.round(ap['whiskers'][1].get_ydata(), r))

        plt.close()

        if [alo == blo] == [True, True]:
            if [ahi == bhi] == [True, True]:
                print w, "|", alo[1], "=", blo[1], '&', ahi[1], "=", bhi[1]

但是问题在于,这只适用于我的数据不符合的完全正态分布。所以我真的很想找到一种在 Seaborn 箱线图中使用百分位数作为胡须的方法。有没有办法做到这一点?

【问题讨论】:

    标签: python matplotlib seaborn boxplot


    【解决方案1】:

    Seaborn 在这方面似乎和 matplotlib 一样工作:

    tips = sns.load_dataset("tips")
    ax = sns.boxplot(x=tips["total_bill"], whis=[5, 95])
    plt.grid(True)
    

    plt.boxplot(tips["total_bill"], whis=[5, 95], vert=False)
    plt.grid(True)
    

    我猜 seaborn 只是将 whis 传递给 matplotlib 方法。文档字符串可能是从早期版本的 matplotlib 复制而来的。

    【讨论】:

    • 非常感谢您为我尝试!起初,我在 Seaborn 中尝试了 whis = [5, 95],但它对我不起作用。它对你有用的事实促使我更新我的 anaconda,因为我可能一直在运行旧包。之后,Seaborn 基于百分位数的箱线图胡须也对我有用。
    猜你喜欢
    • 2023-03-16
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2019-09-14
    • 2020-07-27
    • 2019-10-19
    相关资源
    最近更新 更多