【发布时间】:2017-06-22 03:32:57
【问题描述】:
我有一个如下所示的数据框:
import numpy as np
import pandas as pd
location = list(range(1, 34))
location += [102, 172]
stress = np.random.randint(1,1000, len(location))
group = np.random.choice(['A', 'B'], len(location))
df = pd.DataFrame({'location':location, 'stress':stress, 'group':group})
df[['location', 'group']] = df[['location', 'group']].astype(str)
注意:location 和 group 都是字符串
我正在尝试创建一个条形图,以便 location(分类)位于 x 轴上,stress 是每个条形的高度。此外,我想为每个group 使用不同的颜色为每个条上色
我尝试了以下方法:
f, axarr = plt.subplots(1, 1)
axarr.bar(df['location'], df['stress'])
plt.xticks(np.arange(df.shape[0]) + 1, df['location'])
plt.show()
但是,这会产生:
我不确定为什么端栏之间有空格。我猜是因为location 中的102 和172 值,但是,该列是一个字符串,所以我希望它被视为一个分类变量,所有条形都彼此相邻不管location“价值”。我试图通过手动指定 xtick 位置和标签来纠正这个问题,但它似乎不起作用
最后,有没有一种快速的方法可以通过 group 为每个条形着色,而无需手动迭代每个唯一的 group 值?
【问题讨论】:
标签: python pandas matplotlib plot bar-chart