为什么 matplotlib 1.4.0 的箱线图与 matplotlib 2.2.0 的箱线图对于相同数据不同?

Why boxplot by matplotlib 1.4.0 is not as same as boxplot by matplotlib 2.2.0 for same data?

我使用以下代码绘制以第 5 个和第 95 个百分位数作为上限和下限的值。令人惊讶的是,我通过在 python 2.7.3 中使用 matplotlib 1.4.0 和在 python 3.6.5 中使用 matplotlib 2.2.0 得到了两个不同的图。版本 1.4.0 似乎显示最大值 (49.33),版本 2.2.0 显示第 95 个百分位数约为 25,而实际的第 95 个百分位数为 36.13。这些差异的可能原因是什么?并且,哪一个应该被认为是正确的?

import numpy as np
import matplotlib.pyplot as plt

values = np.array([0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,49.33,0.00,0.00,25.33])

f, (ax1) = plt.subplots()
ax1.boxplot(values, whis=[5.0,95.0], showfliers=False)
plt.show()

我认为很难说哪个是正确的,因为胡须位置仅取决于定义。

在当前的matplotlib版本中,胡须位置的定义是它显示在由whis参数确定的范围内的最高基准处。
此处您使用 whis=[5.0,95.0],95 个百分位数为 ~36。小于等于36的最高数据为25.33;因此晶须显示为该值。

我不知道 matplotlib 1.4 中初始版本的箱线图使用的定义,但我可以想象它是给定 whis 的百分位数范围之外的最低值;因此它将显示在 49.33.