我使用以下代码对第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显示了大约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的boxplot初始版本中使用的定义,但是我可以想象它是给whis
的百分比范围之外的最小值。因此它将显示在49.33
处。
关于python - 对于相同的数据,为什么matplotlib 1.4.0的boxplot与matplotlib 2.2.0的boxplot不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50427368/