Aller au contenu
Accueil » Créer des graphiques avec la librairie Matplotlib et Python

Créer des graphiques avec la librairie Matplotlib et Python

    La visualisation des données est une compétence essentielle dans le domaine des sciences des données et de l’analyse statistique. Sans avoir la prétention de rivaliser les experts dans les domaines cités, pouvoir afficher et tracer des graphiques de vos données vous permet de les interpréter beaucoup plus facilement. Une représentation visuelle claire et concise des informations permet de mieux comprendre les modèles, les tendances et les relations cachées dans les données.

    Pour réaliser toutes ces tâches, la librairie Matplotlib en Python est un outil puissant. Dans cet article nous allons explorer ensemble les bases de Matplotlib. Il s’adresse aux débutants mais également aux expérimentés qui souhaitent réviser leurs bases. Nous verrons comment créer des graphiques attrayants et informatifs.

    Créer des graphiques avec la librairies Matplotlib et Python

    chatgpt, le bouquin python, image présenter un ou deux cas simples

    donner les possibilités de graphiques qu’on peut faire avec. Un article sera rédigé par type de graphique afin de pousser l’étude sur un cas concret.

    Qu’est-ce que Matplotlib ?

    Matplotlib est une librairie populaire pour la visualisation de données en Python. Elle offre une grande flexibilité et permet de créer une variété de graphiques, tels que des diagrammes en barres, des graphiques linéaires, des diagrammes circulaires, des nuages de points, etc. Matplotlib est conçu pour être facile à utiliser tout en offrant des fonctionnalités avancées pour les utilisateurs expérimentés.

    Installation de Matplotlib

    Pour commencer à utiliser Matplotlib, il est nécessaire de l’installer. Si vous utilisez Anaconda, vous pouvez simplement exécuter la commande « conda install matplotlib » dans votre terminal. Si vous utilisez un autre environnement de développement comme Spyder ou VSCode, la commande « pip install matplotlib » doit fonctionner correctement.

    conda install matplotlib # si vous utilisez anaconda
    pip install matplotlib   # dans les autres cas
    Python

    Les bases de la visualisation avec Matplotlib

    La toute première étape pour utiliser la librairie Matplotlib est de l’importer.

    import matplotlib as mpl
    import matplotlib.pyplot as plt
    
    Python

    Vous retrouverez souvent l’import de la librairie Matplotlib renommé en « mpl ». Le module « pyplot », renommé « plt », permet une utilisation simple de la librairie. Les utilisateurs de Matlab se retrouveront dans la façon de faire. Une autre manière d’utilisation la librairie est la façon « orientée objet ».

    Voici un exemple simple de tracé avec la librairie Matplotlib :

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0,10,50)
    y = x**2
    plt.plot(x, y)
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('Fonction y = x²')
    plt.show()
    
    Python
    graphique simple avec matplotlib en python

    Pour tracer une courbe, vous avez donc besoin d’un tableau de valeur à une dimension pour les abscisses (X) et idem pour les ordonnées (Y). Les valeurs sont crées ici grâce à la librairie Numpy qui est très utile pour tout ce qui est calcul numérique et matriciel. Je présente les fonctionnalités dans cet article.

    Le tracé du graphique se fait via la commande « plot » avec la liste des valeurs de X et Y en arguments. Ensuite, les commandes « xlabel » et « ylabel » permettent d’insérer une légende sur les axes associés. La commande « title » pilote le titre du graphique. Enfin, la commande « show » permet d’afficher le graphique. Il faut savoir que toutes les actions précédentes se font en arrière plan. Le graphique n’est visible qu’avec la commande « show ».

    Personnalisation des graphiques

    L’étape suivante consiste à personnaliser vos graphiques. Nous allons découvrir quelques fonctions basiques. Pour aller plus loin, je vous conseille fortement de visiter le site officiel de la librairie donc voici le lien. Vous trouverez une mine d’or d’informations, des exemples et bien entendu le détail de chaque fonction.

    La librairie Python Matplotlib permet donc une personnalisation des graphiques. Vous pourrez rajouter des légendes pour les courbes et les axes, modifier les couleurs et les styles de ligne, le type et la taille des marques, les limites des axes, etc … Afin de mieux comprendre, nous allons passer par un exemple :

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-5,5,50)
    y = np.sin(x)
    
    plt.plot(x, y, marker='o', linestyle='--', color='g', label='Sinus')
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('Graphique de la fonction sinus')
    plt.legend()
    plt.grid(True)
    plt.show()
    Python
    graphique personnalisé avec matplotlib en python

    Nous avons déjà vu les commandes « xlabel », « ylabel » et « title ». Vous avez dû apercevoir que des arguments ont été ajoutés dans la commande « plot ». Vous pouvez personnalisés vos graphiques via différents arguments dans la commande « plot ». L’argument « marker » permet de définir une forme spécifique pour chaque point de la courbe. Ensuite, « linestyle » permet de définir le style de ligne, ici des pointillés. Puis « color » détermine la couleur de la courbe. Enfin « label » permet d’identifier la courbe lorsque la légende est affichée. C’est bien ce qui a été fait via la commande « legend() ». Enfin, vous pouvez afficher ou non le quadrillage via la commande « grid(True) ».

    Nous avons donc vu comment personnalisés une courbe via différents arguments. Nous allons voir maintenant chaque argument en détails.

    Définition de la couleur de la courbe

    Il existe différentes manières de définir la couleur d’une courbe avec Matplotlib. Vous pouvez soit utiliser un code couleur, soit le nom complet ou leur numéro RGB / Hexa. Voici plusieurs exemples vous illustrant les différentes méthodes. si vous ne spécifiez pas de couleur, Matplotlib choisira pour vous automatiquement.

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-5,5,50)
    
    plt.plot(x, np.sin(x - 0), color='red', label="Rouge") # Nom de la couleur
    plt.plot(x, np.sin(x - 1), color='g', label="Vert")   # code rgbcmyk de la couleur
    plt.plot(x, np.sin(x - 2), color='0.7', label="Niveau de gris") # niveau de gris entre 0 et 1
    plt.plot(x, np.sin(x - 3), color='#00FFFF', label="Cyan") # Code Hexa de la couleur
    plt.plot(x, np.sin(x - 4), color=(1.0,0.5,0.0), label="Orange") # Tuple RGB (entre 0. et 1.)
    plt.plot(x, np.sin(x - 5), color='chartreuse', label="Chartreuse") #
    plt.legend()
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.show()
    Python

    Vous pouvez retrouver la liste de toutes les couleurs via ce lien. Voici la liste des principales couleurs.

    Les différentes styles de tracé

    Avec la libraire Matplotlib, vous pouvez également choisir le type de tracé que vous souhaitez entre un trait plein, des pointillés, un trait mixte, etc … Voici un exemple qui utilise les principaux styles de ligne.

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-5,5,50)
    
    plt.plot(x, 0.5*x, linestyle='solid', label='solid') # trait plein
    plt.plot(x, 0.5*x + 1, linestyle='dashed', label='dashed') # tirets
    plt.plot(x, 0.5*x + 2, linestyle='dashdot', label='solid') # trait mixte
    plt.plot(x, 0.5*x + 3, linestyle='dotted', label='dotted') # pointillés
    
    plt.legend()
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.show()
    Python
    Les différents styles de ligne avec Matplotlib en Python

    De plus, ces styles peuvent être définis par des raccourcis si vous ne voulez pas écrire leur nom complet. Voici le même exemple que précédemment mais en utilisant les raccourcis pour les styles de ligne.

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-5,5,50)
    
    plt.plot(x, 0.5*x + 4, linestyle='-', label='solid shorcut') # raccourci pour trait plein
    plt.plot(x, 0.5*x + 5, linestyle='--', label='dashed shorcut') # raccourci pour tirets
    plt.plot(x, 0.5*x + 6, linestyle='-.', label='dashdot shorcut') # raccourci pour trait mixte
    plt.plot(x, 0.5*x + 7, linestyle=':', label='dotted shorcut') # raccourci pour pointillés
    
    plt.legend()
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.show()
    Python

    Combiner le code couleur avec le tracé

    Afin de simplifier votre code, vous pouvez combiner le style de ligne avec la couleur via leurs raccourcis respectifs.

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-5,5,50)
    
    plt.plot(x, 0.5*x + 4, '-g', label='solid green')
    plt.plot(x, 0.5*x + 5, 'b--', label='dashed blue')
    plt.plot(x, 0.5*x + 6, 'r-.', label='dashdot red') 
    plt.plot(x, 0.5*x + 7, ':c', label='dotted cyan')
    
    plt.legend()
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.show()
    Python
    Combiner la couleur avec le style de ligne dans Matplotlib

    Définir les limites d’axes

    Ensuite, une fois que les courbes sont paramétrées comme vous le souhaitez, il est temps de définir les limites des axes. De base, Matplotlib gère plutôt bien les échelles sur les axes. Cependant, dans certains cas, vous aurez besoin de gérer spécifiquement les bornes. Ceci peut se faire via les commandes « .xlim() » et « .ylim() ».

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-5,5,50)
    
    plt.plot(x, np.cos(x), '-g', label='cosinus')
    
    plt.legend()
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.xlim(-2.,2.)
    plt.ylim(-0.5,0.5)
    plt.show()
    Python

    Dans l’exemple présenté, les commandes « xlim » et « ylim » permettent d’effectuer un zoom sur une zone définie par les bornes [-2.;2.] sur l’axe X et [-0.5;0.5] sur l’axe Y.

    Pour piloter les axes, vous pouvez aussi passer par la commande « axis » qu permet de définir en une ligne les valeurs minimum et maximum sur chaque axe.

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-5,5,50)
    
    plt.plot(x, np.cos(x), '-g', label='cosinus')
    
    plt.legend()
    plt.xlabel("X")
    plt.ylabel("Y")
    xmin, xmax = -2., 2.
    ymin, ymax = -0.5, 0.5
    plt.axis([xmin, xmax, ymin, ymax])
    plt.show()
    
    Python

    Le résultat sera donc exactement le même que précédemment. Avec la commande « axis », vous pouvez aussi utiliser des mots clés comme « auto », « tight », « equal » ou « scaled » qui vont ajuster automatiquement les échelles. Les différents mots clés sont disponibles et expliqués dans la documentation dont voici le lien. Enfin, voici deux exemples pour que vous puissiez visualiser l’effet de ces mots clés.

    # On reprend l'exemple précédent mais on change la manière de piloter les axes
    plt.grid('True')
    
    # Premier exemple avec le mot clé "equal"
    plt.axis('equal')
    plt.title("Graphique avec plt.axis('equal')")
    
    # Second exemple avec le mot clé "tight"
    plt.axis('tight')
    plt.title("Graphique avec plt.axis('tight')")
    Python
    gestion des axes avec la commande axis  de Matplotlib

    Personnalisation de la légende

    Nous avons vu qu’il est possible d’afficher des légendes avec la commande « plt.legend() ». Pour chaque courbe, on peut mettre l’argument « label= » avec comme valeur le nom de la courbe. Le label sera réutilisé pour la légende.

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-5,5,50)
    
    plt.plot(x, np.cos(x), '-g', label='cosinus')
    plt.plot(x, np.sin(x), ':r', label='sinus')
    plt.plot(x, np.tan(x), '-.b', label='tangente')
    plt.title("Fonctions trigonométriques") # Titre du graphique
    plt.xlabel("X") # Légende de l'axe X
    plt.ylabel("Y") # Légende de l'axe Y
    plt.grid('True') # Affichage de la grille
    plt.axis('tight') # Option d'axe pour avoir un ajustement serré
    plt.legend() # Affichage de la légende
    plt.show()
    Python

    Ensuite, afin de personnaliser encore plus la légende, dans la commande « .legend() », vous pouvez rajouter les arguments suivants :

    • frameon : par défaut, la valeur est « True ». Vous pouvez désactiver l’option pour enlever le cadre autour mais les éléments du graphique pourront gêner la lisibilité
    • facecolor : par défaut « white », cet argument est inutile si « frameon » n’est pas activé. Cet argument permet de définir la couleur de fond du cadre de la légende.
    • framealpha : l’argument alpha est souvent utilisé pour piloter la transparence d’un objet. C’est également le cas pour le cadre de la légende. Une valeur de 0 signifie que la légende est complètement transparente et une valeur de 1 signifie que la légende est complètement opaque. Cette option n’a aucun effet sur l’argument « frameon » est désactivé.
    • loc : valeur par défaut = « best », cet argument permet de piloter la position de la légende sur votre graphique. Les valeurs disponibles sont les suivantes : ‘best’, ‘upper right’, ‘upper left’, ‘lower left’, ‘lower right’, ‘right’, ‘center left’, ‘center right’, ‘lower center’, ‘upper center’, ‘center’
    • ncols : nombre de colonnes utilisé pour afficher la légende
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-5,5,50)
    
    plt.plot(x, np.cos(x), '-g', label='cosinus')
    plt.plot(x, np.sin(x), ':r', label='sinus')
    plt.plot(x, np.tan(x), '-.b', label='tangente')
    plt.title("Fonctions trigonométriques")
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.grid('True')
    plt.axis('tight')
    plt.legend(loc='lower center',facecolor="grey",frameon=True,ncols=3,
               framealpha = 1.0)
    plt.show()
    Python
    Exemple de gestion de la légende d'un graphique avec Matplotlib

    Je vous ai présenté les principaux arguments utiles mais il en existe encore d’autres pour peaufiner encore plus vos graphiques. Pour avoir la liste complète des arguments, voici le lien vers la documentation de Matplotlib.

    Dans l’exemple précédent, la légende est affichée sur trois colonnes, complètement opaque avec un fond gris (c’est moche mais cela illustre bien l’exemple). De plus, la localisation de la légende est centrée en bas du graphique.

    Les types de graphiques

    Matplotlib offre une variété de graphiques que vous pouvez créer en fonction de vos besoins. Voici quelques exemples :

    – Diagrammes en barres : Idéaux pour représenter des catégories et leurs valeurs associées.

    – Graphiques linéaires : Utiles pour visualiser les tendances et les relations entre les données.

    – Diagrammes circulaires : Parfaits pour montrer des proportions ou des pourcentages.

    – Nuages de points : Idéaux pour représenter la corrélation entre deux variables.

    – Graphiques en boîte : Utiles pour représenter la distribution et les valeurs aberrantes d’un ensemble de données.

    Voici une représentation de chaque type de graphique cité. Les images sont issues de la documentation officielle (lien).

    les différents types de graphiques avec Matplotlib en Python

    Matplotlib offre également des fonctionnalités avancées pour la création de sous-graphiques, la manipulation des axes, les graphiques en 3D, les cartes de chaleur, etc. Vous pouvez explorer davantage ces fonctionnalités en consultant la documentation officielle de Matplotlib.

    les graphiques 3D avec Matplotlib en Python

    Et pour finir sur la librairie Matplotlib

    La librairie Matplotlib est un outil puissant pour la visualisation de données en Python. Que vous soyez un débutant cherchant à explorer les bases de la visualisation ou un utilisateur expérimenté souhaitant créer des graphiques personnalisés et avancés, Matplotlib vous offre une flexibilité et une facilité d’utilisation exceptionnelles. En utilisant les concepts de base présentés dans cet article, vous pourrez créer des graphiques attrayants et informatifs pour mieux comprendre vos données. N’oubliez pas d’explorer la documentation officielle de Matplotlib pour découvrir toutes les fonctionnalités qu’elle offre.

    Nous avons vu ensemble la méthode utilisant la méthode « pyplot ». Cette méthode a l’avantage d’être simple à utiliser et à appliquer. Elle ressemble énormément à Matlab pour ceux qui utilisent ce logiciel. Nous verrons dans un autre article comment utiliser la librairie Matplotlib à la manière orientée objet. Cette méthode permet de mieux maîtriser la génération de graphique dans des programmes plus élaborés.

    J’espère que vous aurez apprécié cet article et qu’il vous servira dans vos projets. N’hésitez pas à laisser un commentaire, j’y répondrai avec plaisir. A bientôt, Benjamin

    Si vous avez aimé l'article, vous êtes libres de le partager ! :)

    Laisser un commentaire