我在Python的Matplotlib中绘制嵌套饼图时遇到了一个问题。我写了一些代码来处理这个过程,但我有一个与设计和标签相关的问题
我想画一种这种嵌套的饼图。(从嵌套的最上层到最内层是性别,与覆盖其计数对齐)
这是我的数据框,如下所示
ALIGN SEX count
2 Bad Characters Male Characters 1542
5 Good Characters Male Characters 1419
3 Good Characters Female Characters 714
0 Bad Characters Female Characters 419
8 Neutral Characters Male Characters 254
6 Neutral Characters Female Characters 138
1 Bad Characters Genderless Characters 9
4 Good Characters Genderless Characters 4
7 Neutral Characters Genderless Characters 3
9 Reformed Criminals Male Characters 2
下面是与显示嵌套饼图相关的代码片段,如下所示
fig, ax = plt.subplots(figsize=(24,12))
size = 0.3
ax.pie(dc_df_ALIGN_SEX.groupby('SEX')['count'].sum(), radius=1,
labels=dc_df_ALIGN_SEX['SEX'].drop_duplicates(),
autopct='%1.1f%%',
wedgeprops=dict(width=size, edgecolor='w'))
ax.pie(dc_df_ALIGN_SEX['count'], radius=1-size, labels = dc_df_ALIGN_SEX["ALIGN"],
wedgeprops=dict(width=size, edgecolor='w'))
ax.set(aspect="equal", title='Pie plot with `ax.pie`')
plt.show()
我如何设计4行和4列,并将它们放在每个插槽中,并在图例区域显示标签
因为问题已经改变了,我发布了一个新的答案
首先,我稍微简化了您的数据帧:
对于外圈中的数字,我们可以使用一个简单的
groupby
,正如您所做的:但对于内环中的数字,我们需要根据两个分类变量进行分组,这将产生一个多索引:
我们可以使用
get_level_values()
方法从多索引中提取适当的标签:现在,您可以将上述值转换为一维数组,并将其插入到绘图调用中:
定义函数
percentage_growth(l)
时,假定其参数l
为列表(或其他一维对象)。但是(为了分配colors
),您在dc_df_ALIGN_SEX
上调用这个函数,这显然是您的数据帧。因此,函数(在循环的第一次迭代中)尝试计算dc_df_ALIGN_SEX[0]
,这会抛出关键错误,因为这不是索引数据帧的正确方法也许你想做一些类似
percentage_growth(dc_df_ALIGN_SEX['count'])
的事情相关问题 更多 >
编程相关推荐