I understand that the ends of whiskers in matplotlib\'s box plot function extend to max value below 75% + 1.5 IQR and minimum value above 25% - 1.5 IQR. I would like to change
To get the whiskers to appear at the min and max of the data, set the whis
parameter to an arbitrarily large number. In other words: boxplots = ax.boxplot(myData, whis=np.inf)
.
The whis
kwarg is a scaling factor of the interquartile range. Whiskers are drawn to the outermost data points within whis * IQR
away from the quartiles.
In matplotlib v1.4, you can say: boxplots = ax.boxplot(myData, whis=[5, 95])
to set the whiskers at the 5th and 95th percentiles. Similarly, you'll be able to say boxplots = ax.boxplot(myData, whis='range')
to set the whiskers at the min and max.
Note: you could probably modify the artists contained in the boxplots
dictionary returned by the ax.boxplot
method, but that seems like a huge hassle
Set the boxplot option whisk=0 to hide the inbuilt whiskers. Then create the custom whiskers that show data from 5% to 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)
That should create vertical lines with whisker markings behind the boxes at 5% at 95%.