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

如何为百分比堆叠柱状图添加原始数据计数标注?

百分比堆叠柱状图添加原始计数标注实现方案

核心思路

要在堆叠柱状图的每个色块中心添加原始计数,需遍历每个柱子的两个色块(适配/不适配),分别计算色块的中心坐标,再在对应位置写入原始数值。关键是结合堆叠柱的底部位置和色块高度来确定中心y轴坐标。

完整代码示例(Jupyter Notebook环境)

import pandas as pd
import matplotlib.pyplot as plt

# ---------------------- 替换为你的实际DataFrame ----------------------
# 示例数据
data = {
    'IL': ['地区A', '地区B', '地区C'],
    'ENGELLIUYGUN': [120, 80, 150],
    'ENGELLIUYGUNDEGIL': [30, 40, 50]
}
df = pd.DataFrame(data)
# -------------------------------------------------------------------

# 计算各地区总数及占比
df['总数'] = df['ENGELLIUYGUN'] + df['ENGELLIUYGUNDEGIL']
df['适配占比'] = df['ENGELLIUYGUN'] / df['总数'] * 100
df['不适配占比'] = df['ENGELLIUYGUNDEGIL'] / df['总数'] * 100

# 初始化绘图
plt.style.use('seaborn-v0_8')
fig, ax = plt.subplots(figsize=(10, 6))
x = range(len(df))
bar_width = 0.6

# 绘制堆叠柱状图(蓝色=适配,绿色=不适配)
bars_adapt = ax.bar(x, df['适配占比'], bar_width, label='适配', color='#1f77b4')
bars_unadapt = ax.bar(x, df['不适配占比'], bar_width, bottom=df['适配占比'], label='不适配', color='#2ca02c')

# ---------------------- 核心标注逻辑 ----------------------
# 给蓝色适配柱添加原始计数
for bar, count in zip(bars_adapt, df['ENGELLIUYGUN']):
    bar_height = bar.get_height()
    # 中心坐标:x为柱子中点,y为柱子高度的一半(底部从0开始)
    ax.text(bar.get_x() + bar_width/2, bar_height/2,
            f'{count}', ha='center', va='center', fontsize=10, color='white')

# 给绿色不适配柱添加原始计数
for bar, count, bottom_height in zip(bars_unadapt, df['ENGELLIUYGUNDEGIL'], df['适配占比']):
    bar_height = bar.get_height()
    # 中心坐标:x为柱子中点,y为适配柱高度 + 不适配柱高度的一半
    ax.text(bar.get_x() + bar_width/2, bottom_height + bar_height/2,
            f'{count}', ha='center', va='center', fontsize=10, color='white')
# ---------------------------------------------------------

# 完善图表样式
ax.set_xlabel('地区', fontsize=12)
ax.set_ylabel('占比 (%)', fontsize=12)
ax.set_title('各地区适配情况百分比堆叠柱状图', fontsize=14)
ax.set_xticks(x)
ax.set_xticklabels(df['IL'])
ax.legend()

plt.tight_layout()
plt.show()

关键细节说明

  • 坐标计算:适配柱的底部是0,中心y坐标为自身高度的一半;不适配柱的底部是适配柱的高度,中心y坐标为适配柱高度加上自身高度的一半。
  • 文本样式:用color='white'保证文本在彩色柱子上清晰可读,可根据柱子颜色调整文本颜色;ha='center'和va='center'确保文本严格居中。
  • 灵活性:如果你的柱子颜色、宽度或数据列名不同,只需对应修改代码中的颜色值、变量名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:05:14