5

我试图在 matplotlib 中创建一个饼图,并希望将标签放在楔形内。我使用以下代码来做到这一点:

import matplotlib.pyplot as plt

fig = plt.figure(1, figsize=(8,8), dpi=60)
ax=fig.add_axes([0.1,0.1,0.8,0.8])
labels = ['label0','label1','label2','label3','label4','label5','label6','label7','label8',\
          'label0','label1','label2','label3','label4','label5','label6','label7','label8']
colors = list('w' for _ in range(18))
fracs=list(20 for _ in range(18))
ax.pie(fracs, labels=labels, colors = colors, startangle=10,labeldistance=0.8)
plt.show()

如下图所示,标签似乎未在楔形内正确对齐。有没有办法修改(或旋转)标签,以便它们可以在楔子内正确显示?

谢谢!

Matplotlib 生成的图像

4

1 回答 1

8

返回后调整标签的对齐方式应该可以解决问题:

patches, texts = ax.pie(fracs, labels=labels, colors = colors, 
                        startangle=10, labeldistance=0.8)
for t in texts:
    t.set_horizontalalignment('center')

plt.show()

我不太明白第二个问题,因为您似乎已经使用startangle参数将切片移动了 10 度。无论如何,通常最好在不同的帖子中列出单独的问题。

于 2013-09-05T18:44:41.393 回答