我使用Python绘制数据(来自许多实验),我想使用boxplot
库的pandas
方法。
执行df = pd.DataFrame(value,columns=['Col1'])
的结果如下:
问题来自极端的价值观。在Matlab中,解决方案是使用'DataLimit'选项:
boxplot(bp1,'DataLim',[4.2,4.3])
来自Matlab文档:
数据限制和最大距离
'DataLim' - 极限数据限制[-Inf,Inf](默认)|双元素数值向量
极限数据限制,指定为逗号分隔对,分别由'DataLim'和包含下限和上限的双元素数字向量组成。 “ExtremeMode”使用为“DataLim”指定的值来确定哪些数据点是极端的。
Python有类似的东西吗?
Walkaround:但是,我有一个走动(我真的不喜欢,因为它改变了测量的统计分布):我只是手动排除“有问题的值”:
df = pd.DataFrame(value[100:],columns=['Col1'])
df.boxplot(column=['Col1'])
结果是:
这是因为我知道问题出在哪里。
您可以使用ylim
来约束轴而不会忽略计算中的异常值:
data = np.concatenate((np.random.rand(50) * 100, # spread
np.ones(25) * 50, # center
np.random.rand(10) * 100 + 100, # flier high
np.random.rand(10) * -100, # flier low
np.random.rand(2) * 10_000)) # unwanted outlier
fig1, ax1 = plt.subplots()
ax1.boxplot(data)
plt.ylim([-100, 200])
plt.show()