Changing what the ends of whiskers represent in matplotlib's boxplot function

后端 未结 2 1960
暖寄归人
暖寄归人 2021-02-14 02:42

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

相关标签:
2条回答
  • 2021-02-14 03:33

    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.

    Now that v1.4 is out:

    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

    0 讨论(0)
  • 2021-02-14 03:41

    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%.

    0 讨论(0)
提交回复
热议问题