Accéder au contenu principal

Tracés linéaires dans MatplotLib avec Python

Ce tutoriel pratique plonge en profondeur dans la création et la personnalisation de tracés linéaires avec Matplotlib, une puissante bibliothèque de visualisation de données en Python.
Actualisé 14 nov. 2024  · 11 min de lecture

La visualisation des données et la narration sont essentielles pour les scientifiques des données, car elles transforment des données complexes en récits convaincants et faciles à digérer pour une communication efficace. Alors que de nouvelles bibliothèques plus sophistiquées sont publiées, Matplotlib reste l'une des bibliothèques de traçage les plus populaires et constitue la base des nouvelles bibliothèques.

Ce tutoriel se concentre sur l'un des types de tracés Matplotlib les plus courants, le tracé linéaire. Les graphiques linéaires sont excellents pour mettre en évidence les tendances et les fluctuations des données au fil du temps, en reliant les points (littéralement) pour peindre une image vivante de ce qui se passe.

Ce didacticiel commence par les bases de la création d'un simple tracé linéaire et passe ensuite à des techniques plus avancées, telles que l'ajout d'informations statistiques aux tracés. A la fin de ce tutoriel, vous aurez une solide compréhension de la façon de créer différents types de graphiques linéaires dans Matplotlib et de les utiliser pour communiquer efficacement vos données à d'autres personnes.

Êtes-vous prêt à améliorer vos compétences en matière de visualisation de données ? Commençons !

Bibliothèques, données et prétraitement

Avant de commencer à créer des tracés avec Matplotlib, nous devons configurer notre environnement. Cela implique l'installation de Matplotlib, l'importation des bibliothèques requises et le prétraitement du jeu de données que nous utiliserons pour nos exemples.

Installation de matplotlib

Pour installer Matplotlib, vous pouvez utiliser pip, l'installateur de paquets pour Python. Ouvrez simplement un terminal ou une invite de commande et tapez :

pip install matplotlib

Ceci installera la dernière version de Matplotlib sur votre machine.

Importer les bibliothèques nécessaires

Une fois Matplotlib installé, nous devons l'importer avec d'autres bibliothèques nécessaires telles que NumPy et Pandas. NumPy est une bibliothèque permettant de travailler avec des tableaux, tandis que Pandas est destiné à la manipulation et à l'analyse de données.

Pour importer ces bibliothèques, il suffit de taper le code suivant :

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

Lecture et prétraitement des données

Pour ce tutoriel, nous utiliserons un ensemble de données contenant les prix quotidiens de l'indice DJIA. L'ensemble de données comprend cinq colonnes : 

  • La colonne Date indique la date à laquelle les autres informations sur le cours de l'action ont été enregistrées.
  • Ouvrir, fermer : Le prix du DJIA à l'ouverture et à la fermeture du marché boursier pour ce jour particulier.
  • Haut, bas : Prix le plus élevé et le plus bas atteint par le DJIA au cours d'une journée donnée.

Après avoir chargé l'ensemble de données, nous effectuerons un prétraitement de base des données, par exemple en renommant la colonne, en la convertissant en variable datetime et en triant les données par ordre croissant de date.

Voici le code pour ce qui précède :

# Load the dataset into a Pandas DataFrame
df = pd.read_csv("HistoricalPrices.csv")

# Rename the column to remove an additional space
df = df.rename(columns = {' Open': 'Open', ' High': 'High', ' Low': 'Low', ' Close': 'Close'})

# Convert the date column to datetime
df['Date'] = pd.to_datetime(df['Date'])

# Sort the dataset in the ascending order of date
df = df.sort_values(by = 'Date')

Maintenant que nous avons configuré l'environnement et chargé le jeu de données, nous pouvons passer à la création de graphiques linéaires à l'aide de Matplotlib.

Devenez un scientifique ML

Maîtriser Python pour devenir un scientifique de l'apprentissage automatique
Commencez À Apprendre Gratuitement

Création d'un tracé linéaire de base dans Matplotlib

Nous commencerons par créer un graphique linéaire de base, puis nous le personnaliserons pour le rendre plus présentable et plus informatif.

Utilisation de plt.plot() pour créer un graphique linéaire

Pour créer un graphique linéaire, nous utiliserons la fonction plt.plot(). Cette fonction prend deux paramètres : les valeurs de l'axe des x et les valeurs de l'axe des y. Dans notre cas, la colonne des dates correspondra aux valeurs de l'axe des x, tandis que la colonne des fermetures correspondra aux valeurs de l'axe des y. Voici le code :

# Extract the date and close price columns
dates = df['Date']
closing_price = df['Close']

# Create a line plot
plt.plot(dates, closing_price)

# Show the plot
plt.show()

Lorsque vous exécutez le code ci-dessus, vous devriez voir un graphique linéaire de base de l'action DJIA. 

image7.png

Personnalisation du tracé des lignes

Matplotlib nous offre de nombreuses possibilités de personnalisation, que nous pouvons utiliser en fonction de nos besoins.

Réglage de la couleur de la ligne

Par défaut, la fonction plt.plot() trace une ligne bleue. Cependant, vous pouvez modifier la couleur de la ligne en passant un paramètre color à la fonction. Le paramètre color peut prendre une chaîne représentant le nom de la couleur ou un code hexadécimal. 

En voici un exemple :

# Plot in Red colour
plt.plot(dates, closing_price, color='red')

# Show the plot
plt.show()

Ce code tracera une ligne rouge au lieu d'une ligne bleue, comme indiqué ci-dessous :

image9.png

Tracé de base en rouge

Réglage de la largeur de ligne

Vous pouvez également modifier la largeur de la ligne en passant un paramètre linewidth à la fonction plt.plot(). Le paramètre linewidth prend une valeur en virgule flottante représentant la largeur de la ligne. 

En voici un exemple :

# Increasing the linewidth
plt.plot(dates, closing_price, linewidth=3)

# Show the plot
plt.show()

Ce code tracera une ligne d'une largeur de 3 au lieu de la largeur par défaut, comme indiqué ci-dessous : 

image10.png

Lignes plus épaisses dans le graphique en raison d'une largeur de raie plus importante

Définition du style de ligne

Vous pouvez modifier le style de ligne en passant un paramètre linestyle à la fonction plt.plot(). Le paramètre linestyle contient une chaîne de caractères qui représente le style de ligne. La documentation de matplotlib fournit une liste exhaustive des styles disponibles. 

image1.png

Voici comment les utiliser dans le code :

# Individually plot lines in solid, dotted, dashed and dashdot

plt.plot(dates, closing_price, linestyle='solid') # Default line style
plt.plot(dates, closing_price, linestyle='dotted')
plt.plot(dates, closing_price, linestyle='dashed')
plt.plot(dates, closing_price, linestyle='dashdot')

# Show the plot
plt.show()

Ajout de marqueurs aux tracés linéaires

Des marqueurs peuvent être utilisés pour mettre en évidence des points spécifiques dans le tracé linéaire. Différents types de symboles peuvent être utilisés comme marqueurs et peuvent être référencés dans la documentation de matplotlib.

Voici un exemple d'utilisation de marqueurs dans un graphique linéaire :

# Add a cross marker for each point
plt.plot(df['Date'], df['Close'], marker='x')

# Show the plot
plt.show()

Dans le code ci-dessus, nous utilisons des marqueurs en croix (x) pour mettre en évidence les prix Close de l'action DJIA, comme indiqué ci-dessous : 

image6.png

Ajout d'étiquettes et de titres

Pour rendre le graphique plus informatif, nous pouvons ajouter des étiquettes d'axe et un titre. Pour ce faire, nous utilisons respectivement les fonctions plt.xlabel(), plt.ylabel() et plt.title()

En voici un exemple :

plt.plot(dates, closing_price, color='red', linewidth=2)
plt.xlabel('Date')
plt.ylabel('Closing Price')
plt.title('DJIA Stock Price')

# Show the plot
plt.show()

Ce code trace une ligne rouge d'une largeur de 2, dont l'axe x est intitulé "Date", l'axe y "Prix de clôture" et le titre "Prix de l'action DJIA". 

image5.png

Ajout de lignes de grille

Nous pouvons également ajouter des lignes de grille à notre tracé pour le rendre plus lisible. Pour ce faire, nous utilisons la fonction plt.grid(). La fonction plt.grid() prend une valeur booléenne représentant l'affichage de la grille. 

En voici un exemple : 

plt.plot(dates, closing_price, color='red', linewidth=2)
plt.xlabel('Date')
plt.ylabel('Closing Price')
plt.title('DJIA Stock Price')

# Add the grid
plt.grid(True)

# Show the plot
plt.show()

Vous verriez des grilles ajoutées au tracé : 

image2.png

Matplotlib - Tracés de lignes avec plusieurs lignes

Dans certains cas, vous pouvez vouloir tracer plusieurs lignes sur le même graphique. Pour ce faire, vous pouvez appeler la fonction plt.plot() plusieurs fois avec des données différentes à chaque appel. En voici un exemple :

# Line plot of Open and Close prices

plt.plot(df['Date'], df['Open'])
plt.plot(df['Date'], df['Close'])
plt.title('DJIA Open and Close Prices')
plt.xlabel('Date')
plt.ylabel('Price')

plt.show()

Dans le code ci-dessus, nous traçons les prix Open et Close de l'action DJIA sur le même graphique. 

image4.png

Matplotlib - Tracés linéaires avec axes jumelés

Il peut arriver que vous souhaitiez représenter deux variables avec des échelles différentes sur le même graphique. Dans de telles situations, l'utilisation d'axes jumelés est un moyen efficace de visualiser la relation entre les variables sans perdre la clarté des échelles individuelles. 

Pour créer un graphique linéaire avec deux axes, nous devons utiliser la fonction twinx(). Cette fonction crée un nouvel axe des ordonnées qui partage le même axe des abscisses que le tracé original. 

En voici un exemple :

# Create a new variable for demonstration purposes
df['High_minus_Low'] = df['High'] - df['Low']

# Create a basic line plot for the Close prices
fig, ax1 = plt.subplots()
ax1.plot(df['Date'], df['Close'], color='blue', label='Close Price')
ax1.set_xlabel('Date')
ax1.set_ylabel('Closing Price', color='blue')
ax1.tick_params(axis='y', labelcolor='blue')

# Create a twin axis for the High_minus_Low variable
ax2 = ax1.twinx()
ax2.plot(df['Date'], df['High_minus_Low'], color='green', label='High - Low')
ax2.set_ylabel('High minus Low', color='green')
ax2.tick_params(axis='y', labelcolor='green')

# Add a title and show the plot
plt.title('DJIA Stock Price and High-Low Difference with Twin Axes')
plt.show()

Et le graphique qui en résulte avec deux axes : 

image8.png

Ajouter des informations statistiques aux graphiques linéaires de Matplotlib

Outre la visualisation des tendances et des modèles de données, les tracés linéaires peuvent également afficher des informations statistiques telles que des lignes de régression et des barres d'erreur. 

Ajouter une ligne de régression Matplotlib

Une ligne de régression est une ligne qui correspond le mieux aux points de données d'un graphique et qui peut être utilisée pour modéliser et prédire des valeurs futures. Nous pouvons ajouter une ligne de régression à notre graphique linéaire en utilisant la fonction polyfit() de la bibliothèque NumPy, qui ajuste une ligne de régression polynomiale à nos points de données. 

import matplotlib.dates as mdates

# Convert Date column to numeric value
df['Date'] = mdates.date2num(df['Date'])

# Add regression line to plot
coefficients_open = np.polyfit(df['Date'], df['Open'], 1)
p_open = np.poly1d(coefficients_open)

coefficients_close = np.polyfit(df['Date'], df['Close'], 1)
p_close = np.poly1d(coefficients_close)

fig, ax = plt.subplots()
ax.plot(df['Date'], df['Open'], '.', label='Open Price')
ax.plot(df['Date'], p_open(df['Date']), '-', label='Open Regression Line')
ax.plot(df['Date'], df['Close'], '.', label='Close Price')
ax.plot(df['Date'], p_close(df['Date']), '-', label='Close Regression Line')
ax.set_title('DIJA Stock Prices')
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.legend()

# Format x-axis labels as dates
date_form = mdates.DateFormatter("%Y-%m-%d")
ax.xaxis.set_major_formatter(date_form)
plt.gcf().autofmt_xdate()

plt.show()

Dans ce code, nous convertissons d'abord les dates en valeurs numériques à l'aide de la fonction date2num() , puis nous utilisons la fonctionpolyfit() pour obtenir les coefficients de la droite de régression. Nous utilisons la fonction poly1d() pour tracer la ligne. Nous représentons les points de données originaux par des points et la ligne de régression par une ligne continue. 

image11.png

Ajout de barres d'erreur

Les barres d'erreur sont une représentation graphique de la variabilité des données et peuvent être utilisées pour indiquer l'incertitude des mesures.

Cette fonction est particulièrement utile lorsque vous vous attendez à des erreurs dans le processus de collecte des données, comme les données relatives à la température, à la qualité de l'air, etc. Bien que nous soyons certains des prix des actions, supposons une erreur potentielle d'un écart-type et traçons-la à l'aide de la fonction errorbar de matplotlib.

# Calculate standard deviation of data
std = df['Close'].std()

# Add error bars to plot
plt.errorbar(df['Date'], df['Close'], yerr=std/2, fmt='.', label='Close Price')
plt.title('DIJA Stock Prices')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()

Dans ce code, nous calculons d'abord l'écart-type des prix Close dans notre ensemble de données. Nous utilisons ensuite la fonction errorbar() pour ajouter des barres d'erreur au graphique linéaire, la taille de la barre d'erreur étant fixée à la moitié de l'écart-type .

image3.png

Ces techniques nous permettent d'ajouter des informations statistiques à nos graphiques linéaires et d'obtenir des informations plus approfondies sur nos données.

Conclusion

Les graphiques linéaires sont un outil puissant pour visualiser les tendances et les modèles dans les données, et Matplotlib fournit une interface conviviale pour les créer. 

Pour la suite, vous pourriez suivre notre cours Python intermédiaire, où vous appliquerez tout ce que vous avez appris à une étude de cas de statistiques sur le piratage informatique. 

Nous espérons que ce tutoriel vous a aidé à commencer à créer des tracés de lignes dans Matplotlib. Nous avons également couvert en détail les autres tracés de Matplotlib dans un autre tutoriel, qui peut vous présenter brièvement ce que vous pouvez faire d'autre avec Matplotlib. 

Continuez à explorer et à expérimenter en créant des visualisations étonnantes et en découvrant des informations à partir de vos données !

Obtenez une certification pour le poste d'analyste de données de vos rêves

Nos programmes de certification vous aident à vous démarquer et à prouver aux employeurs potentiels que vos compétences sont adaptées à l'emploi.

Obtenez Votre Certification
Timeline mobile.png
Sujets