J'ai un dataframe tel que (ceci est un sous-ensemble du dataframe):

    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

Je veux tracer un graphique à barres empilées où chaque barre correspond à l'espèce (axe des x). L'axe des y afficherait le nombre de familles de gènes, codé en couleur par la voie.

J'ai essayé des choses simples, telles que:

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

Mais j'obtiens une erreur indiquant que:

Empty 'DataFrame': no numeric data to plot

Des idées?

Je vous remercie!

0
Zez 19 mai 2020 à 19:51

3 réponses

Meilleure réponse

Je ferais un set_index().unstack():

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

Production:

enter image description here

0
Quang Hoang 19 mai 2020 à 17:10

Vous pouvez le faire après avoir remodelé le dataframe comme:

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

enter image description here

Ou avec un pivot_table même résultat:

df.pivot(index='Species', columns='Pathway', values='Number of Gene Families')\
  .plot(kind='bar', stacked=True )
1
Ben.T 19 mai 2020 à 17:01

Dans searborn, vous pouvez spécifier une variable hue lors de l'utilisation de {{ X2}}, qui déterminera la couleur des barres en fonction des différents niveaux:

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

enter image description here

1
yatu 19 mai 2020 à 16:56