利用海运条形图绘制宽幅数据帧
问题描述
我正在尝试生成一个条形图,其中包含我的DataFrame
中的所有观察结果,如下所示:Dataframe(行=年,列=对象,值=对象在年的冲突)
使用默认 pandas 时,我获得了正确的图形类型plot
:
cluster_yearly_results_df.plot.bar()
Correct Bar Plot
但是,我想使用海运,但在输入宽格式数据帧时遇到问题,使用:
sns.barplot(data=cluster_yearly_results_df)
我可以使用海运来做我想做的事情吗?
解决方案
seaborn.barplot
文档说明:
换句话说,其目的是用表示条形图用每个矩形的高度表示数值变量的中心趋势估计,并使用误差条提供有关该估计的不确定性的某些指示。
mean
的单个条和表示std
的错误条表示一个变量的多个值。您希望像pandas.plot.bar()
那样用条形图表示单个值。
说到这里,您可以调整您的DataFrame
,如下所示以匹配seaborn
界面。以与您的DataFrame
类似的DataFrame
开头:
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(10, 3)), columns=list('ABC'))
A B C
0 7 6 4
1 3 5 9
2 3 0 5
3 0 1 3
4 9 7 7
使用.stack()
和.reset_index()
创建两列,唯一标识y
中的每个值:
df = df.stack().reset_index()
df.columns = ['x', 'hue', 'y']
哪个选项产生:
x hue y
0 0 A 6
1 0 B 1
2 0 C 2
3 1 A 5
4 1 B 7
然后绘制:
sns.barplot(y='y', x='x', hue='hue', data=df)
相关文章