【发布时间】:2021-03-23 10:46:49
【问题描述】:
我想根据数据框列的值(列的值:“名称”)绘制子图。我可以绘制一个图,但是当使用循环绘制多个图时,它们不显示。
绘制一个情节
d = {'date': ['2020-01', '2020-01', '2020-02', '2020-02'], 'id':[1, 2, 3, 4], 'name':['a', 'b', 'b', 'a'], 'type':['org', 'person', 'org', 'person']}
df = pd.DataFrame(data=d)
pivot = df[df['name'] == 'a'].groupby('date')['type'].value_counts(normalize=True).mul(100).reset_index(name='count').pivot('date', 'type', 'count')
ax = pivot.plot(kind='bar')
ax.legend(bbox_to_anchor=(1, 1), loc='upper left')
使用循环根据列的值绘制子图:“名称”
for i, name in enumerate(names):
ax = plt.subplot(1, 2, i+1)
pivot = df[df['name'] == name].groupby('date')['type'].value_counts(normalize=True).mul(100).reset_index(name='count').pivot('date', 'type', 'count')
ax.plot(kind='bar', stacked=True, data=pivot)
ax.legend(bbox_to_anchor=(1, 1), loc='upper left')
【问题讨论】:
标签: pandas matplotlib