Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Werken met Legenda | Sectie
Datavisualisatie met Matplotlib

bookWerken met Legenda

Wanneer een grafiek meerdere elementen bevat, helpt het toevoegen van een legenda om te verduidelijken wat elk element voorstelt. matplotlib biedt verschillende manieren om een legenda te maken.

Eerste optie

Alle labels kunnen direct binnen plt.legend() worden gedefinieerd:

123456789101112131415161718
import numpy as np import matplotlib.pyplot as plt 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]) positions = np.arange(len(questions)) 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) plt.legend(['positive answers', 'negative answers']) plt.show()
copy

Hiermee wordt een legenda in de linkerbovenhoek gemaakt door een lijst met labels door te geven aan plt.legend().

Tweede optie

Labels kunnen ook direct binnen de plotfuncties worden toegekend met behulp van de parameter label=:

1234567891011121314151617181920
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 = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i in range(len(answers)): plt.bar(positions + width*i, answers[i], width, label=labels[i]) plt.xticks(positions + width*(len(answers)-1)/2, questions) plt.legend() plt.show()
copy

Hier verzamelt plt.legend() automatisch labels van de weergegeven elementen.

Derde optie

Labels kunnen ook worden ingesteld met de methode set_label() van het geretourneerde artist-object:

12345678910111213141516171819202122
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 = [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]) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
copy

Legendepositie

Het argument loc bepaalt waar de legende verschijnt. De standaardwaarde 'best' laat matplotlib automatisch een optimale positie kiezen.

12345678910111213141516171819202122
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 = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i, label in enumerate(labels): bars = plt.bar(positions + width*i, answers[i], width) bars.set_label(label) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
copy

Geldige waarden voor loc zijn:

'upper left'

'upper center'

'upper right'

'center left'

'center'

'center right'

'lower left'

'lower center'

'lower right'

Je kunt ook de optie 'best' gebruiken, die de legenda automatisch plaatst op de locatie met de minste overlap met de geplotte gegevens. Daarnaast geeft het gebruik van 'right' hetzelfde resultaat als 'center right'.

Note
Meer Bestuderen

Je kunt meer ontdekken in legend() documentatie

Taak

Swipe to start coding

  1. Label de laagste balken als 'primary sector' met het juiste sleutelargument.
  2. Label de middelste balken als 'secondary sector' met het juiste sleutelargument.
  3. Label de hoogste balken als 'tertiary sector' met het juiste sleutelargument.
  4. Plaats de legenda aan de rechterzijde, verticaal gecentreerd.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 10
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

close

bookWerken met Legenda

Veeg om het menu te tonen

Wanneer een grafiek meerdere elementen bevat, helpt het toevoegen van een legenda om te verduidelijken wat elk element voorstelt. matplotlib biedt verschillende manieren om een legenda te maken.

Eerste optie

Alle labels kunnen direct binnen plt.legend() worden gedefinieerd:

123456789101112131415161718
import numpy as np import matplotlib.pyplot as plt 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]) positions = np.arange(len(questions)) 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) plt.legend(['positive answers', 'negative answers']) plt.show()
copy

Hiermee wordt een legenda in de linkerbovenhoek gemaakt door een lijst met labels door te geven aan plt.legend().

Tweede optie

Labels kunnen ook direct binnen de plotfuncties worden toegekend met behulp van de parameter label=:

1234567891011121314151617181920
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 = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i in range(len(answers)): plt.bar(positions + width*i, answers[i], width, label=labels[i]) plt.xticks(positions + width*(len(answers)-1)/2, questions) plt.legend() plt.show()
copy

Hier verzamelt plt.legend() automatisch labels van de weergegeven elementen.

Derde optie

Labels kunnen ook worden ingesteld met de methode set_label() van het geretourneerde artist-object:

12345678910111213141516171819202122
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 = [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]) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
copy

Legendepositie

Het argument loc bepaalt waar de legende verschijnt. De standaardwaarde 'best' laat matplotlib automatisch een optimale positie kiezen.

12345678910111213141516171819202122
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 = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i, label in enumerate(labels): bars = plt.bar(positions + width*i, answers[i], width) bars.set_label(label) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
copy

Geldige waarden voor loc zijn:

'upper left'

'upper center'

'upper right'

'center left'

'center'

'center right'

'lower left'

'lower center'

'lower right'

Je kunt ook de optie 'best' gebruiken, die de legenda automatisch plaatst op de locatie met de minste overlap met de geplotte gegevens. Daarnaast geeft het gebruik van 'right' hetzelfde resultaat als 'center right'.

Note
Meer Bestuderen

Je kunt meer ontdekken in legend() documentatie

Taak

Swipe to start coding

  1. Label de laagste balken als 'primary sector' met het juiste sleutelargument.
  2. Label de middelste balken als 'secondary sector' met het juiste sleutelargument.
  3. Label de hoogste balken als 'tertiary sector' met het juiste sleutelargument.
  4. Plaats de legenda aan de rechterzijde, verticaal gecentreerd.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 10
single

single

some-alt