任务是根据累积得分绘制NBA前5名球员的条形图,并比较东部和西部球员
我在matplotlib中实现了该解决方案,但我想知道如何使用FacetGrid来实现
import numpy as np
import matploltlib.pyplot as plt
import pandas as pd
fake_data = {}
for i in range(100):
name = str(float(np.random.rand(1)))
pos = 'C' if np.random.rand(1) > 0.3 else 'D'
pts = float(np.random.randint(0,2000,1))
conf = 'East' if np.random.rand(1) > 0.5 else 'West'
fake_data[name] = {'pos':pos,'pts':pts,'conf':conf}
fake_data = pd.DataFrame(fake_data).T
fake_data
df = fake_data
df_pos_c_east = df[(df['pos'] == 'C') & (df['conf'] == 'East')].sort_values('pts',ascending=False)[:5]
df_pos_c_east_pts = df_pos_c_east['pts']
df_pos_c_west = df[(df['pos'] == 'C') & (df['conf'] == 'West')].sort_values('pts',ascending=False)[:5]
df_pos_c_west_pts = df_pos_c_west['pts']
fig,axs = plt.subplots(1,2,figsize=[6,6])
df_pos_c_east_pts.plot.bar(ax=axs[0])
df_pos_c_west_pts.plot.bar(ax=axs[1])
fig.suptitle('Top scorers of position C by conf')
axs[0].title.set_text('East')
axs[1].title.set_text('West')
这段代码创建了与我所拥有的数据相同的假数据,并使用matplotlib创建了我想要的图形。我如何使用FacetGrid创建类似的图形
任何帮助都将不胜感激!
1条答案
按热度按时间tsm1rwdh1#
我假设
FacetGrid
是seaborn的FacetGrid
,如果是这样,你可以试着提取数据,并像这样绘图:输出: