Python 如何使用matplotlib创建多个饼图
我有一个熊猫数据框看起来像这样Python 如何使用matplotlib创建多个饼图,python,pandas,matplotlib,data-visualization,pie-chart,Python,Pandas,Matplotlib,Data Visualization,Pie Chart,我有一个熊猫数据框看起来像这样 Year EventCode CityName EventCount 2015 10 Jakarta 12 2015 10 Yogjakarta 15 2015 10 Padang 27 ... 2015 13 Jayapura 34 2015 14 Jakarta 24 2015 14
Year EventCode CityName EventCount
2015 10 Jakarta 12
2015 10 Yogjakarta 15
2015 10 Padang 27
...
2015 13 Jayapura 34
2015 14 Jakarta 24
2015 14 Yogjaarta 15
...
2019 14 Jayapura 12
我想想象一下每年事件数最多的前5个城市(用饼图),按事件代码分组
我该怎么做 熊猫支持自动将每列打印到子图中。因此,您要选择
CityName
作为索引,将EventCode
作为列和绘图
(df.sort_values('EventCount', ascending=False) # sort descending by `EventCount`
.groupby('EventCode', as_index=False)
.head(5) # get 5 most count within `EventCode`
.pivot(index='CityName', # pivot for plot.pie
columns='EventCode',
values='EventCount'
)
.plot.pie(subplots=True, # plot with some options
figsize=(10,6),
layout=(2,3))
)
输出:
这可以通过以下方法实现:使用重构数据、使用筛选顶级城市以及使用
子地块的方法
参数:
# Pivot your data
df_piv = df.pivot_table(index='EventCode', columns='CityName',
values='EventCount', aggfunc='sum', fill_value=0)
# Get top 5 cities by total EventCount
plot_cities = df_piv.sum().sort_values(ascending=False).head(5).index
# Plot
df_piv.reindex(columns=plot_cities).plot.pie(subplots=True,
figsize=(10, 7),
layout=(-1, 3))
[外]
您可以使用
子绘图
方法:我是否可以自动迭代函数以可视化它,而无需在子绘图
中手动绘制它?如果您想要绘制5个图表,您可以对范围(1,6)中的i使用:plot.subplot(f'51{i}')