You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python绘制无尾箱线图 仅在矩形边缘标注最大值最小值

实现方案

你可以直接通过seaborn箱线图的内置参数隐藏须、盖帽和离群点,再手动标注每组的最大最小值即可,完整可运行代码如下:

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

# 构造数据集
df = pd.DataFrame({
    'grup': ['a','a','a','a','b','b','b','c','c','c','c','c','c','c'],
    'X1': [10,9,12,5,20,43,28,40,65,78,65,98,100,150]
})

# 绘制箱线图
ax = sns.boxplot(
    x="grup", 
    y="X1", 
    data=df, 
    palette="Set3",
    showfliers=False,   # 隐藏离群点
    showcaps=False,     # 隐藏须两端的盖帽
    showwhiskers=False  # 隐藏箱线图的须
    # showmedians=False # 取消注释即可隐藏中位数线,仅保留矩形箱体
)

# 计算每个分组的最大最小值
group_stats = df.groupby('grup')['X1'].agg(['min', 'max']).reset_index()
# 分组对应x轴坐标位置为0、1、2
x_positions = range(len(group_stats))

# 标注最大最小值到对应位置
for x, min_val, max_val in zip(x_positions, group_stats['min'], group_stats['max']):
    # 标注最小值,位置在最小值点上方居中
    ax.text(x, min_val, f'最小:{min_val}', ha='center', va='bottom', c='red', fontsize=10)
    # 标注最大值,位置在最大值点下方居中
    ax.text(x, max_val, f'最大:{max_val}', ha='center', va='top', c='red', fontsize=10)

plt.show()

补充说明

  • 如果不需要显示中位数线,仅保留矩形箱体,取消代码中showmedians=False的注释即可
  • 可以根据需求调整标注的颜色、字体大小、位置偏移量

内容的提问来源于stack exchange,提问作者melik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:06:06