web-dev-qa-db-fra.com

Fonction pour créer un graphique à barres groupé

Le but ici est de créer un graphique à barres groupé, pas des sous-graphiques comme l'image ci-dessous

Existe-t-il un moyen simple de créer un graphique à barres groupé en Python? En ce moment, j'obtiens des graphiques à barres séparés, au lieu de barres distinctes sur un seul graphique.

df = pd.DataFrame([['g1','c1',10],['g1','c2',12],['g1','c3',13],['g2','c1',8],['g2','c2',10],['g2','c3',12]],columns=['group','column','val'])

%matplotlib inline
df.groupby(['group']).plot(kind='bar')

enter image description here

11
Rilcon42

Les pandas afficheront les barres groupées par colonnes. Les entrées dans chaque ligne mais différentes colonnes constitueront un groupe dans le graphique résultant. Par conséquent, vous devez "remodeler" votre trame de données pour avoir le "groupe" en colonnes. Dans ce cas, vous pouvez pivoter comme

df.pivot("column", "group", "val")

produire

group   g1  g2
column        
c1      10   8
c2      12  10
c3      13  12

Le traçage entraînera un graphique à barres groupé.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame([['g1','c1',10],['g1','c2',12],['g1','c3',13],['g2','c1',8],
                   ['g2','c2',10],['g2','c3',12]],columns=['group','column','val'])

df.pivot("column", "group", "val").plot(kind='bar')

plt.show()

enter image description here

15