gpt4 book ai didi

python - Matplotlib 饼图与 'All Other Categories"

转载 作者:行者123 更新时间:2023-12-01 08:48:42 24 4
gpt4 key购买 nike

我创建了一个 matplotlib 饼图:

df.plot(kind='pie', subplots=True, figsize=(6, 4))

我的数据框由两列组成 - Country 和 Value(% 分布),并列出了大约 25 个国家/地区。我只想按值(按最高百分比)绘制前 10 个国家/地区,并在图中计算其余国家/地区的百分比值并将其命名为“所有其他国家/地区”。如何使用 matplotlib 使用 .plot 函数执行此操作?
Country   Value
Albania 4%
Brazil 3%
Denmark 5%
France 10%
Mexico 3%
Nigeria 15%
Spain 4%
U.S. 5%

最佳答案

正如评论中已经指出的那样,最好的方法可能是在绘图之前进行操作。这是一种方法:

import pandas as pd
from matplotlib import pyplot as plt
import numpy as np

countries = [
'Albania',
'Brazil',
'Denmark',
'France',
'Mexico',
'Nigeria',
'Spain',
'Germany',
'Finland',
]

#the full dataframe
df = pd.DataFrame(
data = {'country': countries, 'value' :np.random.rand(len(countries))},
).sort_values('value', ascending = False)

#the top 5
df2 = df[:5].copy()

#others
new_row = pd.DataFrame(data = {
'country' : ['others'],
'value' : [df['value'][5:].sum()]
})

#combining top 5 with others
df2 = pd.concat([df2, new_row])

#plotting -- for comparison left all countries and right
#the others combined
fig, axes = plt.subplots(nrows = 1, ncols = 2, figsize = (9,4))
df.plot(kind = 'pie', y = 'value', labels = df['country'], ax = axes[0])
df2.plot(kind = 'pie', y = 'value', labels = df2['country'], ax = axes[1])
axes[0].set_title('all countries')
axes[1].set_title('top 5')
plt.show()

结果看起来像这样。

result of above code

希望这可以帮助。

关于python - Matplotlib 饼图与 'All Other Categories",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48587997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com