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

如何在箱线图与柱状图的叠加图中设置柱状图标签?

箱线图叠加柱状图:添加自定义x轴标签的解决方法

问题说明

已实现箱线图与柱状图的叠加,但无法为柱状图对应的位置添加自定义标签(如'Col0'),尝试set_label()、bar_label()、set_xticklabels()均未解决问题,示例代码如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1234)
df = pd.DataFrame(np.random.randn(10, 4)+3,
                  columns=['Col1', 'Col2', 'Col3', 'Col4'])
boxplot = df.boxplot(column=['Col1', 'Col2', 'Col3'])  

ax = plt.gca()
b = ax.bar(0,5)

解决思路与代码

问题核心是原箱线图的x轴刻度位置和标签数量与新增柱状图的位置不匹配,需先调整x轴刻度列表,再添加对应标签:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1234)
df = pd.DataFrame(np.random.randn(10, 4)+3,
                  columns=['Col1', 'Col2', 'Col3', 'Col4'])
boxplot = df.boxplot(column=['Col1', 'Col2', 'Col3'])  

ax = plt.gca()
# 绘制柱状图,指定x位置为0
b = ax.bar(0, 5)

# 获取原x轴的刻度位置和标签文本
original_ticks = ax.get_xticks()
original_labels = [label.get_text() for label in ax.get_xticklabels()]

# 插入新的刻度位置(0)和对应标签(Col0)到列表头部
new_ticks = np.insert(original_ticks, 0, 0)
new_labels = ['Col0'] + original_labels

# 更新x轴的刻度和标签
ax.set_xticks(new_ticks)
ax.set_xticklabels(new_labels)

plt.show()

关键说明

  • set_label():仅用于设置图例标签,需配合plt.legend()使用,与x轴标签无关
  • bar_label():用于给柱子添加数值标注(如显示柱子高度),不是x轴标签
  • 直接使用set_xticklabels()会失败,因为原x轴刻度数量与新标签数量不匹配,必须先通过set_xticks()调整刻度位置数量,再同步更新标签

若想将柱状图放在箱线图末尾,只需修改刻度插入逻辑:

# 插入到刻度列表末尾
new_ticks = np.append(original_ticks, 4)
new_labels = original_labels + ['Col0']
ax.set_xticks(new_ticks)
ax.set_xticklabels(new_labels)
# 柱状图x位置设为4
b = ax.bar(4, 5)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:25:01