Aller au contenu

Prise en main de Matplotlib - Le guide ultime


Matplotlib est l'emblématique package Python qui permet des créer des visualisations avec Python. Matplotlib est une libraire Python de visualisation.

Installer Matplotlib

pip install matplotlib seaborn

Importer Matplotlib

Matplotlib n'est pas une librairie native en Python, il faut l'installer au préalable. Si vous ne l'avez pas encore installée avez pas Pour importer Matplotlib if suffit de faire ceci import matplotlib mais il est plus courant de faire ceci import matplotlib.pyplot as plt. Nous nous concentrerons sur le package .pyplot

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
names = pd.Series(["Esso", "Lendjina", "Yemi", "Adboul", "Tracy", "Adjo", "Yacuba", "Degnon"])
countries = pd.Series(["Togo", "Haïti", "Nigeria", "Burkina", "Ivory Cost", "Togo", "Niger", "Benin"])
sexes = pd.Series(['M', 'F', 'M', 'M', 'F', 'F', 'F', 'F'])
ages = pd.Series([22, 18, 20,19, 31, 23, 26, 17])
heights = pd.Series([1.73, 1.43, 1.52, 1.82, 1.45, 1.61, 1.90, 1.52])

1. Diagrammes en secteurs (matplotlib.pyplot.pie)

Diagramme en secteurs (camembert)

labels = sexes.value_counts().index
values = sexes.value_counts().values
plt.pie(x=values, labels=labels, autopct='%.2f')
plt.show()

2. Diagrammes en bâtons (matplotlib.pyplot.bar - matplotlib.pyplot.barh)

Diagramme en bâtons

plt.bar(labels, values)
plt.show()

plt.barh(labels, values)
plt.show()

3. Histogramme (matplotlib.pyplot.hist)

Histograme

# Distribution gaussienne de moyenne 5 et d'écart-type 4
x = np.random.normal(5, 4, 100)
plt.hist(x)
plt.title("Distribution gaussienne de moyenne 5 et d'écart-type 4")
plt.show()

# Distribution exponentielle de paramètre lambda=3
x = np.random.exponential(3, 100)
plt.hist(x)
plt.title("Distribution exponentielle de paramètre lambda=3")
plt.show()

# Distribution uniforme de paramètres a=4 et b=5
x = np.random.uniform(4, 5, 100)
plt.hist(x)
plt.title("Distribution uniforme de paramètres a=4 et b=5")
plt.show()

4. Boîtes à moustaches (matplotlib.pyplot.scatter)

Nuage de points

x = np.random.normal(5, 4, 100)
plt.boxplot(x)
plt.title("Distribution gaussienne de moyenne 5 et d'écart-type 4")
plt.show()

5. Nuage de points (matplotlib.pyplot.scatter)

Nuage de points

x = np.random.random(100)
y = np.random.random(100)

plt.scatter(x, y)
plt.show()

6. Courbes (matplotlib.pyplot.plot)

Courbes

x = np.linspace(-10, 10, 100)
y = np.sin(x)

plt.plot(x, y, label='sin(x)', color='black')
plt.legend(loc='best')
plt.show()

5. Graphiques 3D

Courbes

from mpl_toolkits.mplot3d import Axes3D

X = np.random.normal(2, 3, 100)
Y = np.random.uniform(1, 5, 100)
Z = np.random.random(100)

fig = plt.figure()
ax = plt.axes(projection='3d')
ax.scatter(X, Y, Z)

plt.show()

X = np.linspace(0.1, 10, 100)
Y = np.linspace(0.1, 10, 100)
Z = np.log(X + Y)

fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot(X, Y, Z)

plt.show()

Redmimensionner un graphique

# Create a Figure
fig = plt.figure(figsize=(8,3))

# Create a bar plot of name vs grade
plt.bar(x=df_students.Name, height=df_students.Grade, color='orange')

# Customize the chart
plt.title('Student Grades')
plt.xlabel('Student')
plt.ylabel('Grade')
plt.grid(color='#95a5a6', linestyle='--', linewidth=2, axis='y', alpha=0.7)
plt.xticks(rotation=90)

# Show the figure
plt.show()

Combiner plusieurs graphiques

# Create a figure for 2 subplots (1 row, 2 columns)
fig, ax = plt.subplots(1, 2, figsize = (10,4))

# Create a bar plot of name vs grade on the first axis
ax[0].bar(x=df_students.Name, height=df_students.Grade, color='orange')
ax[0].set_title('Grades')
ax[0].set_xticklabels(df_students.Name, rotation=90)

# Create a pie chart of pass counts on the second axis
pass_counts = df_students['Pass'].value_counts()
ax[1].pie(pass_counts, labels=pass_counts)
ax[1].set_title('Passing Grades')
ax[1].legend(pass_counts.keys().tolist())

# Add a title to the Figure
fig.suptitle('Student Data')

# Show the figure
fig.show()

Sauvegarder un graphique

plt.savefig("figures/graphique.png")
<Figure size 640x480 with 0 Axes>

Let get in touch

Github Badge Facebook Badge Linkedin Badge Twitter Badge Gmail Badge

Partagez sur les réseaux sociaux

Commentaires