据我所知,matplotlib盒子图函数中胡须的末端扩展到最大值低于75%+ 1.5 IQR,最小值高于25% - 1.5 IQR。我想将其更改为表示数据的最大值和最小值或数据的第5和第95四分位数。有可能这样做吗?
答案 0 :(得分:15)
要使胡须出现在数据的最小值和最大值,请将whis
参数设置为任意大的数字。换句话说:boxplots = ax.boxplot(myData, whis=np.inf)
。
whis
kwarg是四分位数范围的缩放因子。晶须被吸引到距离四分位数whis * IQR
内的最外面的数据点。
在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%。