matplotlib 在饼图上同时显示值和百分比[重复]

62lalag4  于 2023-04-06  发布在  其他
关注(0)|答案(2)|浏览(225)

此问题已在此处有答案

How do I use matplotlib autopct?(7个回答)
昨天关门了。
下面是我的当前代码

values = pd.Series([False, False, True, True])
v_counts = values.value_counts()
fig = plt.figure()
plt.pie(v_counts, labels=v_counts.index, autopct='%.4f', shadow=True);

目前,它仅显示百分比(使用autopct
我想同时呈现百分比和实际价值(我不介意位置)

9avjhtql

9avjhtql1#

创建你自己的格式化函数。注意你必须以某种方式从那个函数中的百分比重新计算实际值

def my_fmt(x):
    print(x)
    return '{:.4f}%\n({:.0f})'.format(x, total*x/100)

values = pd.Series([False, False, True, True, True, True])
v_counts = values.value_counts()
total = len(values)
fig = plt.figure()
plt.pie(v_counts, labels=v_counts.index, autopct=my_fmt, shadow=True);

fafcakar

fafcakar2#

@diziet-asahi的代码对我不起作用,你可以用途:

def autopct_format(values):
        def my_format(pct):
            total = sum(values)
            val = int(round(pct*total/100.0))
            return '{:.1f}%\n({v:d})'.format(pct, v=val)
        return my_format

plt.pie(mydata,labels = mylabels, autopct=autopct_format(mydata))

下面是我的输出:

注意:如果你想要更多的小数,只要改变my_format(pct)返回值中的数字就可以了

相关问题