Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python matplotlib中将标签放置在饼图顶部?_Python_Matplotlib - Fatal编程技术网

如何在python matplotlib中将标签放置在饼图顶部?

如何在python matplotlib中将标签放置在饼图顶部?,python,matplotlib,Python,Matplotlib,我试图画一个饼图,并在饼上贴上一个标签,但不知道怎么做。 谁能教我如何在馅饼上贴标签吗 下面是数据示例 Group percent [0,10] 0 [10,20] 3 [20,30] 16 [30,40] 11 [40,50] 23 [50,60] 5 [60,70] 27 这是我想要的饼图格式。 我确信还有其他方法可以做到这一点,但我的回应是将从Autotext获得的标签更改为我想要添加的标签 fig, ax = plt.sub

我试图画一个饼图,并在饼上贴上一个标签,但不知道怎么做。 谁能教我如何在馅饼上贴标签吗

下面是数据示例

Group    percent
[0,10]      0
[10,20]     3 
[20,30]    16
[30,40]    11 
[40,50]    23 
[50,60]    5
[60,70]    27
这是我想要的饼图格式。


我确信还有其他方法可以做到这一点,但我的回应是将从Autotext获得的标签更改为我想要添加的标签

fig, ax = plt.subplots(figsize=(10, 7), subplot_kw=dict(aspect="equal"))
data = df['percent']

labels = ['0~10%', '10~20%', '20~30%', '30~40%', '40~50%', '50~60%','60~70%']
colors = ['#fad9c1','#03396c', '#3b5998', '#63ace5', '#adcbe3','#e3f0ff']

def func(pct, allvals):
    absolute = int(round(pct/100.*np.sum(allvals)))
    return "{:.1f}%\n{:d} hr\n".format(pct, absolute)

wedges, texts, autotexts = ax.pie(data, colors=colors, autopct=lambda pct: func(pct, data), textprops=dict(color="black"))    

for i in range(len(labels)):
    tmp = autotexts[i].get_text()
    new_label = labels[i]+'\n'+tmp.split('\n')[1]+'\n'
    autotexts[i].set_text(new_label)
    
plt.setp(autotexts, size=12, weight="bold")

plt.show()

这里有关于您所问问题的文档
fig, ax = plt.subplots(figsize=(10, 7), subplot_kw=dict(aspect="equal"))
data = df['percent']

labels = ['0~10%', '10~20%', '20~30%', '30~40%', '40~50%', '50~60%','60~70%']
colors = ['#fad9c1','#03396c', '#3b5998', '#63ace5', '#adcbe3','#e3f0ff']

def func(pct, allvals):
    absolute = int(round(pct/100.*np.sum(allvals)))
    return "{:.1f}%\n{:d} hr\n".format(pct, absolute)

wedges, texts, autotexts = ax.pie(data, colors=colors, autopct=lambda pct: func(pct, data), textprops=dict(color="black"))    

for i in range(len(labels)):
    tmp = autotexts[i].get_text()
    new_label = labels[i]+'\n'+tmp.split('\n')[1]+'\n'
    autotexts[i].set_text(new_label)
    
plt.setp(autotexts, size=12, weight="bold")

plt.show()