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

如何在Python pyplot条形图中展示相邻柱子的百分比变化

实现方法

你可以通过计算相邻数值的百分比变化后,在两个柱子的中间位置添加标注实现,完整示例代码如下:

import matplotlib.pyplot as plt

x = [1, 2, 3]
y = [10, 45, 23]

# 绘制基础条形图
plt.bar(x, y)

# 遍历计算并标注相邻柱子的百分比变化
for i in range(len(y)-1):
    # 计算百分比变化率
    change_rate = (y[i+1] - y[i]) / y[i] * 100
    # 计算标注位置:x为两个柱子的中点,y为两个柱子的最大值加偏移量避免遮挡
    annotate_x = (x[i] + x[i+1]) / 2
    annotate_y = max(y[i], y[i+1]) + 2
    # 格式化标注文本,自动带正负号、保留1位小数
    annotate_text = f"{change_rate:+.1f}%"
    # 添加标注,可按需开启arrowprops参数添加连接两个柱子的指示线
    plt.annotate(annotate_text, 
                 xy=(annotate_x, annotate_y), 
                 ha='center', 
                 fontsize=10,
                 arrowprops=dict(arrowstyle='-', lw=1, connectionstyle='bar,fraction=0.3')
                )

plt.show()
  • 数值上升时标注自动带正号,下降时自动带负号,符合常规的变化率展示习惯
  • 代码里的annotate_y偏移量(示例中为+2)可以根据你的y轴数值范围调整,避免标注和柱子重叠
  • 如果不需要两个柱子之间的连接指示线,删掉annotate方法里的arrowprops参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 03:30:03