Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Ajout de Légende | Personnalisation des Graphiques
Visualisation Ultime Avec Python

Glissez pour afficher le menu

book
Ajout de Légende

Lorsque plusieurs éléments sont présents dans un graphique, il est souvent utile de les identifier pour plus de clarté. La légende remplit cette fonction en fournissant une zone compacte qui explique les différents composants du graphique.

Voici trois méthodes courantes pour créer une légende dans matplotlib.

Première option

Considérez l'exemple suivant pour clarifier le concept :

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np # Define categories and data questions = ['question_1', 'question_2', 'question_3'] yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) # Set positions and bar width positions = np.arange(len(questions)) width = 0.3 # Create the grouped bar chart for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) # Adjust x-axis ticks to the center of groups plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Setting the labels for the legend explicitly plt.legend(['positive answers', 'negative answers']) plt.show()
copy

Dans le coin supérieur gauche, une légende explique les différentes barres du graphique. Cette légende est créée à l'aide de la fonction plt.legend(), avec une liste d'étiquettes passée en premier argument—généralement appelée labels.

Deuxième option

Une autre possibilité consiste à spécifier le paramètre label dans chaque appel de la fonction de tracé, comme bar dans notre exemple :

1234567891011121314151617181920212223242526272829
import matplotlib.pyplot as plt import numpy as np # Define x-axis categories and their positions questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) # Define answers for each category yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) labels = ['positive answers', 'negative answers'] # Set the width for each bar width = 0.3 # Plot each category with a label for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width, label=labels[i]) # Set x-axis ticks and labels at the center of each group plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Automatically create legend from label parameters plt.legend() plt.show()
copy

Ici, plt.legend() détermine automatiquement les éléments à ajouter à la légende ainsi que leurs étiquettes ; tous les éléments pour lesquels le paramètre label est spécifié sont inclus.

Troisième option

En réalité, il existe même une option supplémentaire utilisant la méthode set_label() sur l'artiste (bar dans notre exemple) :

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i in range(len(answers)): bar = plt.bar(positions + width * i, answers[i], width) bar.set_label(labels[i]) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

Emplacement de la légende

Il existe un autre argument clé important de la fonction legend(), loc, qui spécifie l'emplacement de la légende. Sa valeur par défaut est best, ce qui "indique" à matplotlib de choisir automatiquement la meilleure position pour la légende afin d'éviter le chevauchement avec les données.

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i, label in enumerate(labels): bars = plt.bar(positions + width * i, answers[i], width) bars.set_label(label) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

Dans cet exemple, la légende est positionnée au centre supérieur du graphique. D'autres valeurs valides pour le paramètre loc incluent :

  • 'upper right', 'upper left', 'lower left' ;

  • 'lower right', 'right' ;

  • 'center left', 'center right', 'lower center', 'center'.

Note
Approfondir

Vous pouvez approfondir le sujet dans la documentation de legend()

Tâche

Swipe to start coding

  1. Étiqueter les barres les plus basses comme 'primary sector' en spécifiant l'argument de mot-clé approprié.
  2. Étiqueter les barres du milieu comme 'secondary sector' en spécifiant l'argument de mot-clé approprié.
  3. Étiqueter les barres du haut comme 'tertiary sector' en spécifiant l'argument de mot-clé approprié.
  4. Placer la légende sur le côté droit, centrée verticalement.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 2
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

close

Awesome!

Completion rate improved to 3.85

book
Ajout de Légende

Lorsque plusieurs éléments sont présents dans un graphique, il est souvent utile de les identifier pour plus de clarté. La légende remplit cette fonction en fournissant une zone compacte qui explique les différents composants du graphique.

Voici trois méthodes courantes pour créer une légende dans matplotlib.

Première option

Considérez l'exemple suivant pour clarifier le concept :

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np # Define categories and data questions = ['question_1', 'question_2', 'question_3'] yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) # Set positions and bar width positions = np.arange(len(questions)) width = 0.3 # Create the grouped bar chart for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) # Adjust x-axis ticks to the center of groups plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Setting the labels for the legend explicitly plt.legend(['positive answers', 'negative answers']) plt.show()
copy

Dans le coin supérieur gauche, une légende explique les différentes barres du graphique. Cette légende est créée à l'aide de la fonction plt.legend(), avec une liste d'étiquettes passée en premier argument—généralement appelée labels.

Deuxième option

Une autre possibilité consiste à spécifier le paramètre label dans chaque appel de la fonction de tracé, comme bar dans notre exemple :

1234567891011121314151617181920212223242526272829
import matplotlib.pyplot as plt import numpy as np # Define x-axis categories and their positions questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) # Define answers for each category yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) labels = ['positive answers', 'negative answers'] # Set the width for each bar width = 0.3 # Plot each category with a label for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width, label=labels[i]) # Set x-axis ticks and labels at the center of each group plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Automatically create legend from label parameters plt.legend() plt.show()
copy

Ici, plt.legend() détermine automatiquement les éléments à ajouter à la légende ainsi que leurs étiquettes ; tous les éléments pour lesquels le paramètre label est spécifié sont inclus.

Troisième option

En réalité, il existe même une option supplémentaire utilisant la méthode set_label() sur l'artiste (bar dans notre exemple) :

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i in range(len(answers)): bar = plt.bar(positions + width * i, answers[i], width) bar.set_label(labels[i]) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

Emplacement de la légende

Il existe un autre argument clé important de la fonction legend(), loc, qui spécifie l'emplacement de la légende. Sa valeur par défaut est best, ce qui "indique" à matplotlib de choisir automatiquement la meilleure position pour la légende afin d'éviter le chevauchement avec les données.

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i, label in enumerate(labels): bars = plt.bar(positions + width * i, answers[i], width) bars.set_label(label) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

Dans cet exemple, la légende est positionnée au centre supérieur du graphique. D'autres valeurs valides pour le paramètre loc incluent :

  • 'upper right', 'upper left', 'lower left' ;

  • 'lower right', 'right' ;

  • 'center left', 'center right', 'lower center', 'center'.

Note
Approfondir

Vous pouvez approfondir le sujet dans la documentation de legend()

Tâche

Swipe to start coding

  1. Étiqueter les barres les plus basses comme 'primary sector' en spécifiant l'argument de mot-clé approprié.
  2. Étiqueter les barres du milieu comme 'secondary sector' en spécifiant l'argument de mot-clé approprié.
  3. Étiqueter les barres du haut comme 'tertiary sector' en spécifiant l'argument de mot-clé approprié.
  4. Placer la légende sur le côté droit, centrée verticalement.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

close

Awesome!

Completion rate improved to 3.85

Glissez pour afficher le menu

some-alt