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

如何调整Matplotlib饼图的标签与百分比位置,使所有标签位于图表左侧

Matplotlib饼图标签统一调整到左侧的实现方法

实现思路

调用ax.pie()时会返回三个值,分别是扇区对象列表、标签文本对象列表、百分比文本对象列表,我们可以直接修改标签文本对象的坐标,实现统一移动到左侧的效果。

可直接运行的修改后代码

import matplotlib.pyplot as plt
plt.rcParams.update({'font.size': 12})

labels = 'A', 'B', 'C'
sizes = [5, 20, 75]
explode = (0.1, 0, 0)

fig1, ax1 = plt.subplots()
# 调用pie时获取返回的文本对象
wedges, texts, autotexts = ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90)
ax1.axis('equal')

# 统一调整所有标签到左侧区域
for i, t in enumerate(texts):
    # x坐标统一设为-1.5(饼图半径为1,小于-1就在饼图外侧左侧)
    t.set_position((-1.5, t.get_position()[1]))
    # 设置右对齐,让文本靠近饼图
    t.set_ha('right')
    # 可选:如果要把百分比也移到左侧和标签合并,取消下面一行的注释即可
    # t.set_text(f"{labels[i]}: {autotexts[i].get_text()}")
# 如果不需要在扇区内显示百分比,取消下面两行的注释即可
# for at in autotexts:
#     at.set_visible(False)

plt.tight_layout()
plt.savefig('test.png')
plt.show()

效果说明

  • 所有分类标签会统一排列在饼图左侧,纵向位置仍对应各自所属的扇区,不会出现错位
  • 可根据需求选择保留扇区内的百分比显示,或者将百分比和标签合并后统一放在左侧
  • 如果需要加指引线连接左侧标签和对应扇区,可额外调用matplotlib.patches.ConnectionPatch绘制连线实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:15:03