python - 使用 python 和 matplotlib 获取箱线图中使用的值

标签 python numpy matplotlib scipy

我可以根据数据绘制箱线图:

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/

相关文章:

matplotlib - matplotlib.colors.LogNorm 中的零问题

python - Python 日志轮换的 RotatingFileHandler 和 logrotate.d + WatchedFileHandler 之间有区别吗?

python - 缺少1个必需的位置参数-财务

python - 怎样才能让球朝正确的方向弹跳

python - 预期 Zero_padding2d_1_input 具有形状 (None, 3, 875, 375),但得到的数组具有形状 (1, 375, 875, 3)

python - 如何仅更改 numpy 数组字典中的一个值

matplotlib - 如何在matplotlib中自动缩放y轴?

python - 将 WAV 格式从 32 位浮点更改为 16 位 PCM

python - 如何在Python中将直线方程添加到绘图上

python - 如何使用Matplotlib无边框旋转图像?