Kursinhalt
Ultimative Visualisierung mit Python
Ultimative Visualisierung mit Python
Legende Hinzufügen
Es kommt oft vor, dass wir mehrere Elemente auf der Leinwand haben und es besser wäre, sie zu beschriften, um das Diagramm zu beschreiben. Hier kommt die Legende ins Spiel. Grundsätzlich ist es ein relativ kleiner Bereich, der verschiedene Teile des Diagramms beschreibt.
Wir werden drei mögliche Optionen durchgehen, um eine Legende in matplotlib
zu erstellen.
Erste Option
Schauen wir uns ein Beispiel an, um alles klar zu machen:
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()
In der oberen linken Ecke haben wir eine Legende, die verschiedene Balken unseres Diagramms beschreibt. Um eine Legende zu erstellen, wird die Funktion plt.legend()
mit der Liste der Beschriftungen als erstem Argument verwendet (dieser Parameter wird auch labels
genannt).
Zweite Option
Eine andere Option besteht darin, den label
-Parameter in jedem Aufruf der Plot-Funktion (in unserem Beispiel bar()
) anzugeben:
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()
Hier bestimmt plt.legend()
automatisch die Elemente, die der Legende hinzugefügt werden sollen, und deren Beschriftungen (alle Elemente mit dem angegebenen label
-Parameter werden hinzugefügt).
Dritte Option
Tatsächlich gibt es noch eine weitere Option, indem die Methode set_label()
auf dem Künstler (bar
in unserem Beispiel) verwendet wird:
Legendenposition
Es gibt ein weiteres wichtiges Schlüsselwortargument der legend()
-Funktion, loc
, das die Position der Legende angibt. Der Standardwert ist best
, was matplotlib
"sagt", automatisch die beste Position für die Legende zu wählen, um Überlappungen mit den Daten zu vermeiden.
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()
Hier haben wir die Legende im oberen Zentrum platziert. Andere mögliche Werte sind die folgenden:
'upper right'
,'upper left'
,'lower left'
;'lower right'
,'right'
;'center left'
,'center right'
,'lower center'
,'center'
.
Mehr über legend()
können Sie in der Dokumentation erkunden.
Swipe to start coding
- Beschriften Sie die untersten Balken als
'primary sector'
und geben Sie das entsprechende Schlüsselwort-Argument an. - Beschriften Sie die mittleren Balken als
'secondary sector'
und geben Sie das entsprechende Schlüsselwort-Argument an. - Beschriften Sie die obersten Balken als
'tertiary sector'
und geben Sie das entsprechende Schlüsselwort-Argument an. - Verwenden Sie die richtige Funktion, um eine Legende zu erstellen.
- Platzieren Sie die Legende auf der rechten Seite, vertikal zentriert.
Lösung
Danke für Ihr Feedback!
Legende Hinzufügen
Es kommt oft vor, dass wir mehrere Elemente auf der Leinwand haben und es besser wäre, sie zu beschriften, um das Diagramm zu beschreiben. Hier kommt die Legende ins Spiel. Grundsätzlich ist es ein relativ kleiner Bereich, der verschiedene Teile des Diagramms beschreibt.
Wir werden drei mögliche Optionen durchgehen, um eine Legende in matplotlib
zu erstellen.
Erste Option
Schauen wir uns ein Beispiel an, um alles klar zu machen:
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()
In der oberen linken Ecke haben wir eine Legende, die verschiedene Balken unseres Diagramms beschreibt. Um eine Legende zu erstellen, wird die Funktion plt.legend()
mit der Liste der Beschriftungen als erstem Argument verwendet (dieser Parameter wird auch labels
genannt).
Zweite Option
Eine andere Option besteht darin, den label
-Parameter in jedem Aufruf der Plot-Funktion (in unserem Beispiel bar()
) anzugeben:
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()
Hier bestimmt plt.legend()
automatisch die Elemente, die der Legende hinzugefügt werden sollen, und deren Beschriftungen (alle Elemente mit dem angegebenen label
-Parameter werden hinzugefügt).
Dritte Option
Tatsächlich gibt es noch eine weitere Option, indem die Methode set_label()
auf dem Künstler (bar
in unserem Beispiel) verwendet wird:
Legendenposition
Es gibt ein weiteres wichtiges Schlüsselwortargument der legend()
-Funktion, loc
, das die Position der Legende angibt. Der Standardwert ist best
, was matplotlib
"sagt", automatisch die beste Position für die Legende zu wählen, um Überlappungen mit den Daten zu vermeiden.
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()
Hier haben wir die Legende im oberen Zentrum platziert. Andere mögliche Werte sind die folgenden:
'upper right'
,'upper left'
,'lower left'
;'lower right'
,'right'
;'center left'
,'center right'
,'lower center'
,'center'
.
Mehr über legend()
können Sie in der Dokumentation erkunden.
Swipe to start coding
- Beschriften Sie die untersten Balken als
'primary sector'
und geben Sie das entsprechende Schlüsselwort-Argument an. - Beschriften Sie die mittleren Balken als
'secondary sector'
und geben Sie das entsprechende Schlüsselwort-Argument an. - Beschriften Sie die obersten Balken als
'tertiary sector'
und geben Sie das entsprechende Schlüsselwort-Argument an. - Verwenden Sie die richtige Funktion, um eine Legende zu erstellen.
- Platzieren Sie die Legende auf der rechten Seite, vertikal zentriert.
Lösung
Danke für Ihr Feedback!