我试着画一个像这样的图:
数据集为:
Console Type Company Release Units_sold
0 PlayStation 2 Home Sony 2000 155000000
1 Nintendo DS Handheld Nintendo 2004 154002000
2 Nintendo Switch Hybrid Nintendo 2017 122550000
3 Game Boy Handheld Nintendo 1989 118690000
4 PlayStation 4 Home Sony 2013 117200000
5 PlayStation Home Sony 1994 102490000
6 Wii Home Nintendo 2006 101630000
7 PlayStation 3 Home Sony 2006 87400000
8 Xbox 360 Home Microsoft 2005 84000000
9 PlayStation Portable Handheld Sony 2004 82000000
10 Game Boy Advance Handheld Nintendo 2001 81510000
11 Nintendo 3DS Handheld Nintendo 2011 75940000
12 NES Home Nintendo 1983 61910000
13 Xbox One Home Microsoft 2013 58500000
14 SNES Home Nintendo 1990 49100000
15 Nintendo 64 Home Nintendo 1996 32930000
16 PlayStation 5 Home Sony 2020 32100000
17 Xbox Home Microsoft 2001 24000000
18 GameCube Home Nintendo 2001 21740000
19 Xbox Series X/S Home Microsoft 2020 18500000
20 PlayStation Vita Handheld Sony 2011 15000000
21 Wii U Home Nintendo 2012 13560000
22 SNES Classic Dedicated Nintendo 2017 5280000
23 NES Classic Dedicated Nintendo 2016 3560000
24 Color TV-Game Dedicated Nintendo 1977 3000000
这是我的代码:
df_3_outer = df_3.sort_values('Company').reset_index()
# only keep the console and units_sold columns
df_3_outer = df_3_outer[['Console', 'Units_sold']]
df_3_inner = df_3.groupby(['Company'])['Units_sold'].sum().reset_index()
fig, ax = plt.subplots(figsize=(9,6))
inner_colors = ['#156EAF', '#DB2018', '#56B45B']
outer_colors =['#5599CC', '#EA6727', '#83C143']
outer_colors[labels.index('')]
size = 0.8
r = 2
ax.pie(df_3_outer['Units_sold'], labels=df_3_outer.Console, radius=r, colors=outer_colors,
wedgeprops=dict(width=size, edgecolor='w'))
ax.pie(df_3_inner.Units_sold, labels=df_3_inner.Company, radius=r-size, colors=inner_colors,
labeldistance=0.6,
textprops=dict(color="w", fontsize=15),
)
但是,它给出了这样的情节:
正如你所看到的,它还没有完成。对于外面的饼图,我不知道如何确定它的范围,以便它可以匹配到里面的饼图。我不知道如何过滤颜色模式,如上面的图表。
有人知道怎么做吗?
3条答案
按热度按时间0g0grzrc1#
你需要重复外环的颜色,每个颜色中包含的元素数。Pandas的
groupby(...).count()
可以用来计数,np.repeat
可以用来创建一个重复的数组。如果您同时按公司名称和销售量排序,则外圈将考虑该顺序。
由于一些主机的销量非常小,名称会重叠,使情节混乱。您可能需要过滤掉它们。
wnrlj8wa2#
要重新创建这个数字,你需要先根据公司名称,然后根据销售量对数据框进行排序,你可以用以下代码来点选:
df_3_outer = df_3.sort_values(by=['Company','Units_sold']).reset_index()
。然后你需要将公司对应的颜色与每个控制台相关联。完成后,你可以像在代码中一样绘制饼图。完整代码如下:
yks3o0rb3#
重复使用numpy数组:
输出: