在matplotlib的boxplot函数中更改whiskers的结尾

时间:2014-02-24 20:07:34

标签: python matplotlib

据我所知,matplotlib盒子图函数中胡须的末端扩展到最大值低于75%+ 1.5 IQR,最小值高于25% - 1.5 IQR。我想将其更改为表示数据的最大值和最小值或数据的第5和第95四分位数。有可能这样做吗?

2 个答案:

答案 0 :(得分:15)

要使胡须出现在数据的最小值和最大值,请将whis参数设置为任意大的数字。换句话说:boxplots = ax.boxplot(myData, whis=np.inf)

whis kwarg是四分位数范围的缩放因子。晶须被吸引到距离四分位数whis * IQR内的最外面的数据点。

现在v1.4已经出局了:

在matplotlib v1.4中,您可以说:boxplots = ax.boxplot(myData, whis=[5, 95])将胡须设置在第5和第95百分位数。同样,您可以说boxplots = ax.boxplot(myData, whis='range')将胡须设置为最小值和最大值

注意:您可以修改boxplots方法返回的ax.boxplot字典中包含的艺术家,但这似乎是一个巨大的麻烦

答案 1 :(得分:0)

设置boxplot选项whisk = 0以隐藏内置的胡须。然后创建显示5%到95%数据的自定义胡须。

#create markings that represent the ends of whiskers
low=data.quantile(0.05) 
high=data.quantile(0.95)
plt.scatter(range(1,len(low)+1),low,marker='_')
plt.scatter(range(1,len(low)+1),high,marker='_')
#connects low and high markers with a line
plt.vlines(range(1,len(low)+1),low,high)

这应该创建垂直线条,盒子后面有胡须标记,为5%,95%。