Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Legende Hinzufügen | Diagrammanpassung
Ultimative Visualisierung mit Python

Swipe um das Menü anzuzeigen

book
Legende Hinzufügen

Wenn mehrere Elemente in einem Diagramm vorhanden sind, ist es oft hilfreich, diese zur besseren Übersicht zu kennzeichnen. Die Legende erfüllt diesen Zweck, indem sie einen kompakten Bereich bereitstellt, der die verschiedenen Komponenten des Diagramms erklärt.

Im Folgenden werden drei gängige Methoden zur Erstellung einer Legende in matplotlib vorgestellt.

Erste Möglichkeit

Das folgende Beispiel verdeutlicht das Konzept:

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

In der oberen linken Ecke erläutert eine Legende die verschiedenen Balken im Diagramm. Diese Legende wird mit der Funktion plt.legend() erstellt, wobei eine Liste von Beschriftungen als erstes Argument übergeben wird—häufig als labels bezeichnet.

Zweite Option

Eine weitere Möglichkeit besteht darin, den Parameter label bei jedem Aufruf der Plot-Funktion anzugeben, wie zum Beispiel bei bar in unserem Beispiel:

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

Hier bestimmt plt.legend() automatisch die Elemente, die der Legende hinzugefügt werden, sowie deren Beschriftungen; alle Elemente mit angegebenem label-Parameter werden einbezogen.

Dritte Option

Tatsächlich gibt es noch eine weitere Möglichkeit, indem die Methode set_label() auf das Artist-Objekt (in unserem Beispiel bar) angewendet wird:

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

Legendenposition

Ein weiteres wichtiges Schlüsselwortargument der Funktion legend() ist loc, das die Position der Legende angibt. Der Standardwert ist best, wodurch matplotlib automatisch die beste Position für die Legende auswählt, um eine Überlappung mit den Daten zu vermeiden.

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

In diesem Beispiel ist die Legende im oberen Zentrum des Diagramms positioniert. Weitere gültige Werte für den Parameter loc sind:

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

  • 'lower right', 'right';

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

Note
Mehr erfahren

Weitere Informationen finden Sie in der legend() Dokumentation

Aufgabe

Swipe to start coding

  1. Die niedrigsten Balken als 'primary sector' beschriften, indem das entsprechende Schlüsselwortargument angegeben wird.
  2. Die mittleren Balken als 'secondary sector' beschriften, indem das entsprechende Schlüsselwortargument angegeben wird.
  3. Die obersten Balken als 'tertiary sector' beschriften, indem das entsprechende Schlüsselwortargument angegeben wird.
  4. Die Legende rechts, vertikal zentriert, platzieren.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2
Wir sind enttäuscht, dass etwas schief gelaufen ist. Was ist passiert?

Fragen Sie AI

expand
ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

book
Legende Hinzufügen

Wenn mehrere Elemente in einem Diagramm vorhanden sind, ist es oft hilfreich, diese zur besseren Übersicht zu kennzeichnen. Die Legende erfüllt diesen Zweck, indem sie einen kompakten Bereich bereitstellt, der die verschiedenen Komponenten des Diagramms erklärt.

Im Folgenden werden drei gängige Methoden zur Erstellung einer Legende in matplotlib vorgestellt.

Erste Möglichkeit

Das folgende Beispiel verdeutlicht das Konzept:

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

In der oberen linken Ecke erläutert eine Legende die verschiedenen Balken im Diagramm. Diese Legende wird mit der Funktion plt.legend() erstellt, wobei eine Liste von Beschriftungen als erstes Argument übergeben wird—häufig als labels bezeichnet.

Zweite Option

Eine weitere Möglichkeit besteht darin, den Parameter label bei jedem Aufruf der Plot-Funktion anzugeben, wie zum Beispiel bei bar in unserem Beispiel:

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

Hier bestimmt plt.legend() automatisch die Elemente, die der Legende hinzugefügt werden, sowie deren Beschriftungen; alle Elemente mit angegebenem label-Parameter werden einbezogen.

Dritte Option

Tatsächlich gibt es noch eine weitere Möglichkeit, indem die Methode set_label() auf das Artist-Objekt (in unserem Beispiel bar) angewendet wird:

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

Legendenposition

Ein weiteres wichtiges Schlüsselwortargument der Funktion legend() ist loc, das die Position der Legende angibt. Der Standardwert ist best, wodurch matplotlib automatisch die beste Position für die Legende auswählt, um eine Überlappung mit den Daten zu vermeiden.

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

In diesem Beispiel ist die Legende im oberen Zentrum des Diagramms positioniert. Weitere gültige Werte für den Parameter loc sind:

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

  • 'lower right', 'right';

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

Note
Mehr erfahren

Weitere Informationen finden Sie in der legend() Dokumentation

Aufgabe

Swipe to start coding

  1. Die niedrigsten Balken als 'primary sector' beschriften, indem das entsprechende Schlüsselwortargument angegeben wird.
  2. Die mittleren Balken als 'secondary sector' beschriften, indem das entsprechende Schlüsselwortargument angegeben wird.
  3. Die obersten Balken als 'tertiary sector' beschriften, indem das entsprechende Schlüsselwortargument angegeben wird.
  4. Die Legende rechts, vertikal zentriert, platzieren.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2
Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
Wir sind enttäuscht, dass etwas schief gelaufen ist. Was ist passiert?
some-alt