使用Matplotlib绘制饼图为何无法得到完整饼形?
解决饼图显示不完整的问题
嗨,我帮你看了下代码和你提到的饼图问题,问题出在这儿,咱们一步步来解决:
核心修复方法
在你调用plt.pie()之后,加上一行关键代码:
plt.axis('equal')
修改后的完整代码如下:
import matplotlib.pyplot as plt total_a = 0.004095232 total_b = 0.05075945 total_c = 0.005425 total_d = 0.022948572 total_e = 0.015012 slices = [total_a,total_b,total_c,total_d,total_e] activities = ['a', 'b', 'c', 'd','e'] cols = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue', 'orangered'] plt.pie(slices,labels=activities,autopct='%1.1f%%',colors=cols,startangle=140,shadow=True) plt.axis('equal') # 新增这行,让饼图以正圆形完整显示 plt.show()
问题原因说明
Matplotlib的饼图默认需要坐标轴的纵横比例保持相等,否则会因为画布的拉伸或压缩,导致饼图变形甚至缩在角落,看起来像是“不完整”。加上plt.axis('equal')会强制坐标轴使用相同的比例,让饼图以正圆形完整展示在画布中央。
另外补充一句:你提供的slices总和约为0.098,但这完全没问题——Matplotlib的pie()函数默认会自动把这些数值归一化(每个数值除以总和转换成占比),所以不管原始数值总和是多少,都会生成一个完整的饼图,这部分不用额外调整。
内容的提问来源于stack exchange,提问作者user9280506
相关产品推荐
相关产品推荐

