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
相关产品推荐
相关产品推荐

