我可以根据数据绘制箱线图:
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(100)
plt.boxplot(data)
然后,方框的范围将从第 25 个百分位到第 75 个百分位, mustache 的范围从最小值到最大值介于 (25th-percentile - 1.5*IQR, 75th-percentile + 1.5 *IQR
),其中 IQR 表示四分位数间距。 (当然,值 1.5 是可自定义的)。
现在我想知道箱线图中使用的值,即中位数、上四分位数和下四分位数、上须端点和下须端点。虽然使用 np.median()
和 np.percentile()
很容易获得前三个,但 mustache 的终点需要一些冗长的编码:
median = np.median(data)
upper_quartile = np.percentile(data, 75)
lower_quartile = np.percentile(data, 25)
iqr = upper_quartile - lower_quartile
upper_whisker = data[data<=upper_quartile+1.5*iqr].max()
lower_whisker = data[data>=lower_quartile-1.5*iqr].min()
我想知道,虽然这是可以接受的,但是否有更简洁的方法来做到这一点?似乎值应该准备好从箱线图中拉出,因为它已经绘制出来了。
最佳答案
你为什么要这样做?你所做的已经很直接了。
是的,如果你想为情节获取它们,当情节已经制作完成时,只需使用 get_ydata()
方法。
B = plt.boxplot(data)
[item.get_ydata() for item in B['whiskers']]
它为每个 mustache 返回一个形状为 (2,) 的数组,第二个元素是我们想要的值:
[item.get_ydata()[1] for item in B['whiskers']]
关于python - 使用 python 和 matplotlib 获取箱线图中使用的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23461713/