Seaborn是否有与Matplotlib的bxp等效功能,可仅用统计值绘制箱线图?
Seaborn能否仅通过预计算的统计值生成箱线图?
Seaborn官方没有提供专门仅输入中位数、四分位数、上下须边界、异常值等预计算统计值就直接生成箱线图的独立接口,但由于Seaborn底层基于Matplotlib实现,你完全可以搭配Matplotlib的对应方法实现该需求,最终得到符合Seaborn风格的箱线图。
具体实现逻辑非常简单:
- 先整理预计算的统计值为指定格式的字典列表,单组箱线对应一个字典,必须包含的字段为
med(中位数)、q1(下四分位数)、q3(上四分位数)、whislo(下须边界)、whishi(上须边界),可选字段包含fliers(异常值列表)、label(箱线图标签) - 先调用Seaborn的
set_theme等方法配置你需要的绘图主题、调色板等样式 - 最后调用Matplotlib坐标轴对象的
bxp方法传入统计值列表完成绘制,生成的箱线图会自动适配已经设置的Seaborn样式
你可以参考以下示例代码实现:
import seaborn as sns import matplotlib.pyplot as plt # 配置Seaborn主题 sns.set_theme(style="whitegrid", palette="Set2") # 预计算的两组数据统计值 stats_list = [ {"med": 5, "q1": 3, "q3": 7, "whislo": 1, "whishi": 9, "fliers": [10, 0], "label": "样本A"}, {"med": 6.5, "q1": 4.2, "q3": 8.7, "whislo": 2.1, "whishi": 10.3, "fliers": [12, 1], "label": "样本B"} ] fig, ax = plt.subplots(figsize=(6, 4)) # 绘制箱线图,patch_artist=True表示允许填充箱体颜色 ax.bxp(stats_list, patch_artist=True) plt.show()
如果需要做更多自定义调整,比如单独修改箱体、异常值的样式,直接获取bxp方法返回的绘图对象修改属性即可。
内容的提问来源于stack exchange,提问作者Jiahao Chen
相关产品推荐
相关产品推荐

