Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Lägga till Förklaring | Anpassning av Diagram
Ultimat Visualisering med Python

bookLägga till Förklaring

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

Alla etiketter kan definieras 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 också tilldela etiketter direkt i plottningsfunktionerna med 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 in etiketter från de plottade elementen.

Tredje alternativet

Det går även att ange etiketter med metoden set_label() på den returnerade artisten:

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 right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'center'.

Note
Studera vidare

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 lämpligt nyckelordsargument.
  2. Märk staplarna i mitten som 'secondary sector' genom att ange lämpligt nyckelordsargument.
  3. Märk de översta staplarna som 'tertiary sector' genom att ange lämpligt nyckelordsargument.
  4. Placera förklaringen på högra sidan, centrerad vertikalt.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 2
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

Suggested prompts:

Can you explain the difference between these three legend options?

How do I customize the legend appearance further?

What happens if I don't specify the `loc` parameter in `plt.legend()`?

close

bookLägga till Förklaring

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

Alla etiketter kan definieras 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 också tilldela etiketter direkt i plottningsfunktionerna med 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 in etiketter från de plottade elementen.

Tredje alternativet

Det går även att ange etiketter med metoden set_label() på den returnerade artisten:

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 right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'center'.

Note
Studera vidare

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 lämpligt nyckelordsargument.
  2. Märk staplarna i mitten som 'secondary sector' genom att ange lämpligt nyckelordsargument.
  3. Märk de översta staplarna som 'tertiary sector' genom att ange lämpligt nyckelordsargument.
  4. Placera förklaringen på högra sidan, centrerad vertikalt.

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 3. Kapitel 2
single

single

some-alt