我们怎样才能得到在饼图pandas dataframe中打印的值[duplicate]

6yoyoihd  于 2023-04-10  发布在  其他
关注(0)|答案(1)|浏览(123)

此问题已在此处有答案

How do I use matplotlib autopct?(7个回答)
去年关闭。
我们正在尝试用下面的代码来获得饼图,但我们只能看到每个类别的饼图中的百分比,无法打印其确切的值沿着百分比。

dfinfoofbuss = pd.read_csv("file.csv", header=None)

dfinfoofbuss.columns = ['ID', 'INFO']

dfinfoofbuss['VALUE_INFO'] = dfinfoofbuss['ID'].str.split('_').str[1]  

dfinfoofbusscnt = dfinfoofbuss.groupby(['VALUE_INFO']).size().reset_index(name='COUNT_INFO')    

print("dfinfoofbusscnt:",dfinfoofbusscnt)   

plotvar3 = dfinfoofbusscnt.groupby(['VALUE_INFO']).sum().plot(kind='pie' ,title='pie chart', figsize=(6,6), autopct='%.2f', legend = False, use_index=False, subplots=True, colormap="Pastel1")

fig3 = plotvar3[0].get_figure()

fig3.savefig("Info.jpg")

样本数据

VALUE_INFO              CountInfo
     abc                     1
     defair                  2
     cdf                    109
     aggr                    1
     sum                     1
     normal                  2
     dev                     1

有没有办法打印其原始值沿着百分比饼图。。请建议

vlf7wbxs

vlf7wbxs1#

您可能需要编写自己的自定义函数来获取值和百分比作为标签。
尝试:

def formatter(x):
    return f"{total*x/100:.0f} ({x:.2f})%"

total = sum(dfinfoofbusscnt["CountInfo"])
plotdata = dfinfoofbusscnt.groupby("VALUE_INFO").sum()
>>> plotdata.plot(kind='pie', 
                  title='pie chart',
                  figsize=(6,6),
                  autopct=formatter,
                  colormap="Pastel1",
                  legend=False,
                  subplots=True
                  )

相关问题