使用一列设置条形图颜色的数据框的条形图。

问题描述 投票:0回答:1

我有一个数据框,如(这是数据框的一个子集)。

    Species     Pathway        Number of Gene Families
0   Glovio      ABC                    0.5
1   Glovio      ABC/Synthase           1.0
2   Glovio      Synthase               0.0
3   Glovio      Wzy                   10.0
4   Glovio      Wzy/ABC                0.0
5   n2          ABC                    2.0
6   n2          ABC/Synthase           0.0
7   n2          Synthase               13.0
8   n2          Wzy                    7.0
9   n2          Wzy/ABC                0.0
10  Glokil      ABC                    2.0
11  Glokil      ABC/Synthase           1.0
12  Glokil      Synthase               0.0
13  Glokil      Wzy                    4.0
14  Glokil      Wzy/ABC                0.0

我想绘制一个叠加的条形图,每个条形图对应于物种(x轴)。y轴将显示基因家族的数量,用Pathway的颜色编码。

我已经尝试了一些简单的方法,比如。

df[['Pathway']].plot(kind='bar', stacked=True)

但我得到一个错误的说明:

Empty 'DataFrame': no numeric data to plot

有什么办法吗?

谢谢你!我有一个数据框架,如

python pandas bar-chart seaborn stacked-chart
1个回答
0
投票

我会做一个 set_index().unstack():

(df.set_index(['Species','Pathway'])
   ['Number of Gene Families']
   .unstack('Pathway')
   .plot.bar(stacked=True)
)

产出:

enter image description here


1
投票

searborn 您可以指定一个 hue 变量,当使用 sns.barplot它将根据不同的级别来决定条形图的颜色。

sns.barplot(data=df, x='Species', y='NumberofGeneFamilies', hue='Pathway')

enter image description here


1
投票

你可以在重塑数据框架后这样做。

df.groupby(['Species', 'Pathway'])['Number of Gene Families'].sum()\
  .unstack().plot(kind='bar', stacked=True)

enter image description here

或者用pivot_table做同样的结果。

df.pivot(index='Species', columns='Pathway', values='Number of Gene Families')\
  .plot(kind='bar', stacked=True )
© www.soinside.com 2019 - 2024. All rights reserved.