2013-09-05 155 views
3

我试图在matplotlib中创建一个饼图,并希望将标签放在楔形内。我使用下面的代码来做到这一点: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 generated image

+1

你应该问每个问题只有一个问题。 – tacaswell

+0

http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.pie – tacaswell

回答

5

调整标签的排列后,他们将返回应该做的伎俩:

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度。无论如何,将单独的问题列在不同的帖子中通常会更好。

+0

谢谢!这工作。当我将切片移动10度时,我想在每个切片的开始处标出度数。我将单独发布这个问题。 –

+0

这是我发布的关于第二个问题的新问题。 http://stackoverflow.com/questions/18645059/matplotlib-pie-charts-label-to-indicate-slice-angles @hackyday –