我可以在 matplotlib 中生成没有数据集而只有相关值(中位数、四分位数等)的箱线图吗?

Ray*_*Dey 4 python matplotlib python-3.x seaborn

我已经计算了中位数、下/上四分位数、最小值和最大值,作为我单独应用程序的一部分,并将这些值写入文件,我想使用这些特定值构建箱线图。

有没有办法使用 matplotlib(或 seaborn)手动指定这些值中的每一个,而不是提供数据数组(我不需要异常值)?我试过查看文档,但没有发现任何特别相关的内容,但我可能忽略了一些内容。

就像是:

plt.boxplot(median=median_val, quartiles=(lower, upper), range=(min, max))
Run Code Online (Sandbox Code Playgroud)

将是理想的。我也对任何网络解决方案持开放态度。

bus*_*ear 7

matplotlib 中有一个内置函数bxp——让你指定计算的统计数据而不是原始数据来计算,避免创建自己的函数的需要。

您需要将其作为方法从您的Axes对象中调用,而不是从plt

import matplotlib.pyplot as plt

stats = [
    {'med': 5, 'q1': 2, 'q3': 6, 'whislo': 1, 'whishi': 8},
    {'med': 4, 'q1': 2, 'q3': 6, 'whislo': 1, 'whishi': 8}
]

_, ax = plt.subplots();
ax.bxp(stats, showfliers=False);
Run Code Online (Sandbox Code Playgroud)

重要的是,您的输入需要是一个字典列表,对应于要绘制的框列表(即使只有 1 个)。

在此处输入图片说明