Empiler des parcelles de bar dans Matplotlib
- Empiler les diagrammes à barres Matplotlib
- Empiler les diagrammes en barres Matplotlib à l’aide de pandas
Nous générons des diagrammes à barres dans Matplotlib en utilisant la méthode matplotlib.pyplot.bar()
. Pour empiler le diagramme en barres d’un certain ensemble de données sur un autre, nous ajoutons tous les ensembles de données que nous devons empiler et nous passons la somme comme paramètre bottom
à la méthode bar()
.
import matplotlib.pyplot as plt
data1 = [30, 20, 10, 0, 0]
data2 = [20, 20, 20, 20, 0]
data3 = [50, 60, 70, 80, 100]
year = ["2015", "2016", "2017", "2018", "2019"]
fig, ax = plt.subplots(3, 1, figsize=(10, 8))
ax[0].bar(year, data1, color="red")
ax[0].legend(["C++"])
ax[1].bar(year, data2, color="yellow")
ax[1].legend(["JavaScript"])
ax[2].bar(year, data3, color="green")
ax[2].legend(["Python"])
plt.show()
Production :
Ici, nous avons trois histogrammes distincts qui représentent la préférence d’un langage de programmation pour les employés d’une entreprise sur cinq ans. Nous discuterons des moyens d’empiler les diagrammes à barres d’un langage sur un autre et étudierons le choix global des langages de programmation au fil des ans avec un seul diagramme à barres.
Empiler les diagrammes à barres Matplotlib
import numpy as np
import matplotlib.pyplot as plt
data1 = [30, 20, 10, 0, 0]
data2 = [20, 20, 20, 20, 0]
data3 = [50, 60, 70, 80, 100]
year = ["2015", "2016", "2017", "2018", "2019"]
plt.figure(figsize=(9, 7))
plt.bar(year, data3, color="green", label="Python")
plt.bar(year, data2, color="yellow", bottom=np.array(data3), label="JavaScript")
plt.bar(year, data1, color="red", bottom=np.array(data3) + np.array(data2), label="C++")
plt.legend(loc="lower left", bbox_to_anchor=(0.8, 1.0))
plt.show()
Production :
Il empile les différents bargraphes les uns sur les autres. Dans le diagramme, nous traçons d’abord les data3
comme des données Python, qui servent de base pour les autres barres, puis nous traçons la barre des data2
, et la barre de base des data3
comme base pour la barre des data2
. Pour empiler la barre de data2
sur data3
, nous définissons bottom=np.array(data3)
.
De même, en traçant la barre pour data1
, nous utilisons le tracé de la barre de data2
et data3
comme base. Pour ce faire, nous définissons bottom=np.array(data3)+np.array(data2)
tout en traçant la barre de data1
.
Un point important à noter est que nous devons utiliser des tableaux NumPy pour ajouter les données pour le paramètre bottom
. Si nous mettons bottom=data3+data2
, il créera par liste en ajoutant les éléments de data2
à la fin de la liste data3
.
Si nous ne souhaitons pas utiliser les tableaux NumPy, nous pouvons utiliser la compréhension de liste pour ajouter les éléments correspondants de la liste.
import numpy as np
import matplotlib.pyplot as plt
data1 = [30, 20, 10, 0, 0]
data2 = [20, 20, 20, 20, 0]
data3 = [50, 60, 70, 80, 100]
year = ["2015", "2016", "2017", "2018", "2019"]
plt.figure(figsize=(9, 7))
plt.bar(year, data3, color="green", label="Python")
plt.bar(year, data2, color="yellow", bottom=data3, label="JavaScript")
plt.bar(
year,
data1,
color="red",
bottom=[sum(data) for data in zip(data2, data3)],
label="C++",
)
plt.legend(loc="lower left", bbox_to_anchor=(0.8, 1.0))
plt.show()
Production :
Empiler les diagrammes en barres Matplotlib à l’aide de pandas
Nous pouvons également utiliser la bibliothèque Pandas en Python pour générer des diagrammes à barres empilées en Python.
import pandas as pd
import matplotlib.pyplot as plt
years = ["2015", "2016", "2017", "2018", "2019"]
data = {
"Python": [50, 60, 70, 80, 100],
"JavaScript": [20, 20, 20, 20, 0],
"C++": [30, 20, 10, 0, 0],
}
df = pd.DataFrame(data, index=years)
df.plot(kind="bar", stacked=True, figsize=(10, 8))
plt.legend(loc="lower left", bbox_to_anchor=(0.8, 1.0))
plt.show()
Production :
Il génère un diagramme à barres empilées à partir d’un DataFrame de Pandas où le diagramme à barres d’une colonne est empilé sur un autre pour chaque index du DataFrame.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn