13

我正在使用 boxplot 绘制非正态分布,并且有兴趣使用 matplotlib 的 boxplot 函数找出异常值。

除了绘图之外,我还有兴趣找出代码中点的值,这些点在箱线图中显示为异常值。有什么方法可以从箱线图对象中提取这些值以在我的下游代码中使用?

4

1 回答 1

21

您是指两条黑线上方和下方的那些点吗?

from pylab import *
spread= rand(50) * 100
center = ones(25) * 50
flier_high = rand(10) * 100 + 100
flier_low = rand(10) * -100
data =concatenate((spread, center, flier_high, flier_low), 0)
r = boxplot(data)

在此处输入图像描述

存储 boxplot 的返回字典,您可以从中获取所有信息,例如:

top_points = r["fliers"][0].get_data()[1]
bottom_points = r["fliers"][2].get_data()[1]
plot(np.ones(len(top_points)), top_points, "+")
plot(np.ones(len(bottom_points)), bottom_points, "+")

在此处输入图像描述

于 2012-04-20T07:57:27.353 回答