matplotlib中的奇怪胡须?

时间:2015-02-12 19:02:29

标签: python

假设我有logn2 np数组,如:

>>> logn2
array([ -5.        ,   3.22655284,   3.58529678,   5.51257293,
         1.32608097,   1.81131178,   1.61770358,   2.48523293,
         1.52769818,   0.8398167 ,   1.72581258,   0.71002385,
         0.66656821,  15.58947569,   2.66127789,   1.66101225,
         5.93631209,   0.51714802,   1.95765916,   3.8926797 ,   1.78347924])

如果我这样做:

>>> plt.ion()
>>> plt.figure(1)
>>> bp2 = plt.boxplot(logn2)
>>> axes1 = plt.gca()
>>> axes1.set_ylim([-7,20])
>>> plt.draw()

我没有像预期的那样观察Q1-1.5(Q3-Q1)的底部晶须...... 期待解释...... 谢谢你的提前。

1 个答案:

答案 0 :(得分:1)

胡须延伸到位于四分位数1.5*IQR内的最远数据点。除非实际存在数据点,否则它们不会一直延伸到Q1 - 1.5*IQR。对于您的数据:

>>> np.percentile(x, [25, 50, 75])
[1.32608097, 1.7834792399999999, 3.2265528400000001]
>>> q1, q2, q3 = np.percentile(x, [25, 50, 75])
>>> iqr = q3-q1
>>> iqr
1.9004718700000001
>>> q1-1.5*iqr
-1.5246268349999998

在您的数据中,第一个四分位数与此数字之间的更多数据点大约为0.5,因此这就是晶须的位置。