如何调整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
相关产品推荐
相关产品推荐

