Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Arbeta med Förklaringar | Sektion
Practice
Projects
Quizzes & Challenges
Frågesporter
Challenges
/
Datavisualisering med Matplotlib

bookArbeta med Förklaringar

När ett diagram innehåller flera element hjälper en legend till att förtydliga vad varje element representerar. matplotlib erbjuder flera sätt att skapa en legend.

Första alternativet

Du kan definiera alla etiketter direkt i plt.legend():

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

Detta skapar en förklaring i det övre vänstra hörnet genom att skicka en lista med etiketter till plt.legend().

Andra alternativet

Du kan även tilldela etiketter direkt i plottningsfunktionerna med hjälp av parametern 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

Här samlar plt.legend() automatiskt etiketter från de plottade elementen.

Tredje alternativet

Du kan även ange etiketter med hjälp av metoden set_label() på den returnerade artist-objektet:

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

Legendens placering

Argumentet loc styr var legenden visas. Standardvärdet 'best' gör att matplotlib automatiskt väljer en optimal placering.

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

Giltiga värden för loc inkluderar:

'upper left'

'upper center'

'upper right'

'center left'

'center'

'center right'

'lower left'

'lower center'

'lower right'

Du kan också använda alternativet 'best', som automatiskt placerar legenden på den plats där den överlappar minst med den plottade datan. Dessutom ger användning av 'right' samma resultat som 'center right'.

Note
Läs mer

Du kan utforska mer i legend() dokumentation

Uppgift

Swipe to start coding

  1. Märk de lägsta staplarna som 'primary sector' genom att ange rätt nyckelordargument.
  2. Märk staplarna i mitten som 'secondary sector' genom att ange rätt nyckelordargument.
  3. Märk de översta staplarna som 'tertiary sector' genom att ange rätt nyckelordargument.
  4. Placera förklaringen på högra sidan, vertikalt centrerad.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 10
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

bookArbeta med Förklaringar

Svep för att visa menyn

När ett diagram innehåller flera element hjälper en legend till att förtydliga vad varje element representerar. matplotlib erbjuder flera sätt att skapa en legend.

Första alternativet

Du kan definiera alla etiketter direkt i plt.legend():

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

Detta skapar en förklaring i det övre vänstra hörnet genom att skicka en lista med etiketter till plt.legend().

Andra alternativet

Du kan även tilldela etiketter direkt i plottningsfunktionerna med hjälp av parametern 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

Här samlar plt.legend() automatiskt etiketter från de plottade elementen.

Tredje alternativet

Du kan även ange etiketter med hjälp av metoden set_label() på den returnerade artist-objektet:

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

Legendens placering

Argumentet loc styr var legenden visas. Standardvärdet 'best' gör att matplotlib automatiskt väljer en optimal placering.

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

Giltiga värden för loc inkluderar:

'upper left'

'upper center'

'upper right'

'center left'

'center'

'center right'

'lower left'

'lower center'

'lower right'

Du kan också använda alternativet 'best', som automatiskt placerar legenden på den plats där den överlappar minst med den plottade datan. Dessutom ger användning av 'right' samma resultat som 'center right'.

Note
Läs mer

Du kan utforska mer i legend() dokumentation

Uppgift

Swipe to start coding

  1. Märk de lägsta staplarna som 'primary sector' genom att ange rätt nyckelordargument.
  2. Märk staplarna i mitten som 'secondary sector' genom att ange rätt nyckelordargument.
  3. Märk de översta staplarna som 'tertiary sector' genom att ange rätt nyckelordargument.
  4. Placera förklaringen på högra sidan, vertikalt centrerad.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 10
single

single

some-alt