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

Python 对于相同的数据,为什么matplotlib 1.4.0的箱线图与matplotlib 2.2.0的箱线图不同?,python,matplotlib,boxplot,percentile,Python,Matplotlib,Boxplot,Percentile,我用下面的代码用第5百分位和第95百分位作为上限和下限来框绘这些值。令人惊讶的是,通过在Python2.7.3中使用matplotlib 1.4.0和在Python3.6.5中使用matplotlib 2.2.0,我得到了两个不同的图。版本1.4.0似乎显示了最大值(49.33),版本2.2.0显示了25左右的值作为第95百分位,而实际的第95百分位是36.13。这些差异的可能原因是什么?那么,哪一个应该被认为是正确的呢 import numpy as np import matplotlib.

我用下面的代码用第5百分位和第95百分位作为上限和下限来框绘这些值。令人惊讶的是,通过在Python2.7.3中使用matplotlib 1.4.0和在Python3.6.5中使用matplotlib 2.2.0,我得到了两个不同的图。版本1.4.0似乎显示了最大值(49.33),版本2.2.0显示了25左右的值作为第95百分位,而实际的第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

中。您是否可以尝试将
whis
作为浮点而不是整数传递,例如
[5.0,95.0]
?只需在whis中使用浮点进行检查,但没有更改。您有什么numpy版本?它们是否为
np返回相同的值。百分位(值,95)
是的,两者都为np返回36.13。百分位(值,95)我没有看到任何错误,只是选择第95百分位的不同方法。是什么让你认为这是一只虫子?“不能包含第5百分位和第95百分位”它们都在那里。感谢您对当前版本的定义,它主要澄清了我的疑问。