【发布时间】:2019-01-30 11:03:26
【问题描述】:
我目前有一个如下所示的数据框 (df): 我需要绘制它,使它看起来像这样:
![所需图形][2]
在图中,列是“索引”,蓝色条是“Total”,橙色条是“Total.1”
每次我尝试这样做时都会遇到 KeyErrors,请有人指出我正确的方向,因为我觉得我已经尝试了所有方法,但总是出错
【问题讨论】:
标签: python python-3.x pandas matplotlib plot
我目前有一个如下所示的数据框 (df): 我需要绘制它,使它看起来像这样:
![所需图形][2]
在图中,列是“索引”,蓝色条是“Total”,橙色条是“Total.1”
每次我尝试这样做时都会遇到 KeyErrors,请有人指出我正确的方向,因为我觉得我已经尝试了所有方法,但总是出错
【问题讨论】:
标签: python python-3.x pandas matplotlib plot
生成一个简单的水平堆积条形图很容易,下面的代码将完成任务。
df.set_index('index').plot(stacked=True, kind='barh')
plt.tight_layout()
plt.show()
但是,由于您的标签很长,布局会截断信息,您可能需要对标签进行预处理以使其看起来更好。
以下是我推荐的绘图格式:
options = {
'stacked': True,
'kind': 'barh',
'title': 'Medals at the Winter and Summer Olympics'
}
df.rename(columns={'Total': 'Winter Games', 'Total.1': 'Summer Games'}).assign(
code=df['index'].str.extract(r'\((.*?)\)')
).set_index('code')[['Winter Games', 'Summer Games']].plot(**options)
plt.show()
结果:
【讨论】: