如何使用pandas生成细分饼图?

yruzcnhs  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(188)

我有一个包含定性变量的pandas数据框架。我想找到一个很好的方法来显示独立变量如何影响依赖变量。我认为“细分饼图”(不知道如何称呼它)可能是一个好主意,但我不知道是否存在。给出一个像下面这样的pandas数据框架:

import pandas as pd
data = {'Gender': ['m','m','m','f','m','f','m','f','f','f','f','m','m'], 'Favorite character':['Jim','Jim','Pam','Jim','Pam','Jim','Jim','Jim','Pam','Pam','Jim','Jim','Pam' ]}

其中m代表男性,f代表女性,我希望得到这样的图形

有谁知道怎么做?或者去哪里找?
非常感谢您的帮助!

nzk0hqpo

nzk0hqpo1#

您可以使用嵌套的饼图来实现以下内容:

import pandas as pd 
import matplotlib.pyplot as plt 

import pandas as pd
data = {'Gender': ['m','m','m','f','m','f','m','f','f','f','f','m','m'], 'Favorite character':['Jim','Jim','Pam','Jim','Pam','Jim','Jim','Jim','Pam','Pam','Jim','Jim','Pam' ]}
df = pd.DataFrame(data)

level_one = df.groupby('Gender', as_index=False).count()
level_two = df.groupby(['Gender', 'Favorite character'], as_index=False).value_counts()

fig, ax = plt.subplots()

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.pie(level_one['Favorite character'], radius=1, colors=outer_colors,
       wedgeprops=dict(width=size, edgecolor='w'), labels=['F', 'M'])

ax.pie(level_two['count'], radius=1-size, colors=inner_colors,
       wedgeprops=dict(width=size, edgecolor='w'), labels=['F-Jim', 'F-Pam', 'M-Jim', 'M-Pam'])

ax.set(aspect="equal", title='Nested Pie Plot')
plt.show()

相关问题