matplotlib箱形图:标记和exception值
我有一些关于matplotlib中的boxlot的问题:
问题A 我在Q1 , Q2和Q3中突出显示的标记是什么? 我相信Q1是最大的, Q3是exception值,但Q2是什么?
问题B :matplotlib如何识别exception值 ? (即它是如何知道它们不是真正的max
和min
?)
一张图片胜过千言万语。 请注意,exception值(图中的+
标记)仅仅是宽度[(Q1-1.5 IQR), (Q3+1.5 IQR)]
边界之外的点。
但是,图片只是一个正态分布数据集的例子。 理解matplotlib首先不估计正态分布,并根据估计的分布参数计算四分位数,这一点很重要。
相反,中位数和四分位数直接根据数据计算。 因此,根据数据的分布和样本的大小,您的箱型图可能会有所不同,例如,不对称和更多或更less的exception值。
该框表示第一和第三四分位数,红线为中位数(第二四分位数)。 文档给出了1.5 IQR的默认晶须:
boxplot(x, notch=False, sym='+', vert=True, whis=1.5, positions=None, widths=None, patch_artist=False, bootstrap=None, usermedians=None, conf_intervals=None)
和
whis:[默认1.5]
将胡须的长度定义为内四分位数范围的函数。 它们延伸到(whis *(75%-25%))数据范围内的最极端的数据点。
如果您对不同的盒子图表示感到困惑,请尝试阅读wikipedia中的说明 。
除了seth的答案(因为文档不是非常精确的):Q1(wiskers)被放置在最大值低于75%+ 1.5 IQR
(最小值25% – 1.5 IQR)
这是计算晶须位置的代码:
# get high extreme iq = q3 - q1 hi_val = q3 + whis * iq wisk_hi = np.compress(d <= hi_val, d) if len(wisk_hi) == 0 or np.max(wisk_hi) < q3: wisk_hi = q3 else: wisk_hi = max(wisk_hi) # get low extreme lo_val = q1 - whis * iq wisk_lo = np.compress(d >= lo_val, d) if len(wisk_lo) == 0 or np.min(wisk_lo) > q1: wisk_lo = q1 else: wisk_lo = min(wisk_lo)
为了以防万一,这可以让其他人受益,我需要在我的箱子情节图上加上一个图例,所以我在Inkscape中做了这个小小的.png,并认为我会分享它。