Contenu du cours
Visualisation Ultime Avec Python
Visualisation Ultime Avec Python
Ajouter une Légende
Il arrive souvent que nous ayons plusieurs éléments sur le canevas et qu'il serait préférable de les étiqueter afin de décrire le graphique. C'est là que la légende est utile. Fondamentalement, c'est une zone relativement petite qui décrit différentes parties du graphique.
Nous allons passer en revue trois options possibles pour créer une légende dans matplotlib
.
Première Option
Regardons un exemple pour clarifier les choses :
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 for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Setting the labels for the legend explicitly plt.legend(['positive answers', 'negative answers']) plt.show()
Dans le coin supérieur gauche, nous avons une légende qui décrit les différentes barres de notre graphique. Pour créer une légende, la fonction plt.legend()
est utilisée avec la liste des étiquettes comme premier argument (ce paramètre est également appelé labels
).
Deuxième Option
Une autre option consiste à spécifier le paramètre label
dans chaque appel de la fonction de traçage (bar()
dans notre exemple) :
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'] for i in range(len(answers)): # Specifying the label parameter for each of the bar() function calls plt.bar(positions + width * i, answers[i], width, label=labels[i]) plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Automatical detection of the labels plt.legend() plt.show()
Ici, plt.legend()
détermine automatiquement les éléments à ajouter à la légende et leurs étiquettes (tous les éléments avec le paramètre label
spécifié sont ajoutés).
Troisième Option
En fait, il existe même une option supplémentaire en utilisant la méthode set_label()
sur l'artiste (bar
dans notre exemple) :
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
qui "indique" à matplotlib
de choisir automatiquement le meilleur emplacement pour la légende afin d'éviter le chevauchement avec les données.
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'] for i in range(len(answers)): bar = plt.bar(positions + width * i, answers[i], width) bar.set_label(labels[i]) plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Modiying the legend location plt.legend(loc='upper center') plt.show()
Ici, nous avons placé la légende au centre supérieur. D'autres valeurs possibles sont les suivantes :
'upper right'
,'upper left'
,'lower left'
;'lower right'
,'right'
;'center left'
,'center right'
,'lower center'
,'center'
.
Vous pouvez explorer plus sur legend()
dans la documentation.
Swipe to start coding
- Étiquetez les barres les plus basses comme
'primary sector'
en spécifiant l'argument de mot-clé approprié. - Étiquetez les barres du milieu comme
'secondary sector'
en spécifiant l'argument de mot-clé approprié. - Étiquetez les barres du haut comme
'tertiary sector'
en spécifiant l'argument de mot-clé approprié. - Utilisez la fonction correcte pour créer une légende.
- Placez la légende sur le côté droit, centrée verticalement.
Solution
Merci pour vos commentaires !
Ajouter une Légende
Il arrive souvent que nous ayons plusieurs éléments sur le canevas et qu'il serait préférable de les étiqueter afin de décrire le graphique. C'est là que la légende est utile. Fondamentalement, c'est une zone relativement petite qui décrit différentes parties du graphique.
Nous allons passer en revue trois options possibles pour créer une légende dans matplotlib
.
Première Option
Regardons un exemple pour clarifier les choses :
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 for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Setting the labels for the legend explicitly plt.legend(['positive answers', 'negative answers']) plt.show()
Dans le coin supérieur gauche, nous avons une légende qui décrit les différentes barres de notre graphique. Pour créer une légende, la fonction plt.legend()
est utilisée avec la liste des étiquettes comme premier argument (ce paramètre est également appelé labels
).
Deuxième Option
Une autre option consiste à spécifier le paramètre label
dans chaque appel de la fonction de traçage (bar()
dans notre exemple) :
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'] for i in range(len(answers)): # Specifying the label parameter for each of the bar() function calls plt.bar(positions + width * i, answers[i], width, label=labels[i]) plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Automatical detection of the labels plt.legend() plt.show()
Ici, plt.legend()
détermine automatiquement les éléments à ajouter à la légende et leurs étiquettes (tous les éléments avec le paramètre label
spécifié sont ajoutés).
Troisième Option
En fait, il existe même une option supplémentaire en utilisant la méthode set_label()
sur l'artiste (bar
dans notre exemple) :
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
qui "indique" à matplotlib
de choisir automatiquement le meilleur emplacement pour la légende afin d'éviter le chevauchement avec les données.
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'] for i in range(len(answers)): bar = plt.bar(positions + width * i, answers[i], width) bar.set_label(labels[i]) plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Modiying the legend location plt.legend(loc='upper center') plt.show()
Ici, nous avons placé la légende au centre supérieur. D'autres valeurs possibles sont les suivantes :
'upper right'
,'upper left'
,'lower left'
;'lower right'
,'right'
;'center left'
,'center right'
,'lower center'
,'center'
.
Vous pouvez explorer plus sur legend()
dans la documentation.
Swipe to start coding
- Étiquetez les barres les plus basses comme
'primary sector'
en spécifiant l'argument de mot-clé approprié. - Étiquetez les barres du milieu comme
'secondary sector'
en spécifiant l'argument de mot-clé approprié. - Étiquetez les barres du haut comme
'tertiary sector'
en spécifiant l'argument de mot-clé approprié. - Utilisez la fonction correcte pour créer une légende.
- Placez la légende sur le côté droit, centrée verticalement.
Solution
Merci pour vos commentaires !