【问题标题】:Can I generate a boxplot without a dataset and only having the relevant values (median, quartiles, etc) in matplotlib?我可以在没有数据集的情况下生成箱线图,并且在 matplotlib 中只有相关值(中位数、四分位数等)吗?
【发布时间】:2019-01-04 04:21:55
【问题描述】:

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

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

类似:

plt.boxplot(median=median_val, quartiles=(lower, upper), range=(min, max))

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

【问题讨论】:

标签: python python-3.x matplotlib seaborn


【解决方案1】:

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);

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

【讨论】:

  • 完美!非常感谢! :)
猜你喜欢
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
  • 2012-12-06
  • 2015-09-01
  • 1970-01-01
相关资源
最近更新 更多