Arbeta 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():
123456789101112131415161718import 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()
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=:
1234567891011121314151617181920import 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()
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:
12345678910111213141516171819202122import 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()
Legendens placering
Argumentet loc styr var legenden visas. Standardvärdet 'best' gör att matplotlib automatiskt väljer en optimal placering.
12345678910111213141516171819202122import 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()
Giltiga värden för loc inkluderar:
|
|
|
|---|---|---|
|
|
|
|
|
|
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'.
Du kan utforska mer i legend() dokumentation
Swipe to start coding
- Märk de lägsta staplarna som
'primary sector'genom att ange rätt nyckelordargument. - Märk staplarna i mitten som
'secondary sector'genom att ange rätt nyckelordargument. - Märk de översta staplarna som
'tertiary sector'genom att ange rätt nyckelordargument. - Placera förklaringen på högra sidan, vertikalt centrerad.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Fantastiskt!
Completion betyg förbättrat till 6.25
Arbeta 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():
123456789101112131415161718import 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()
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=:
1234567891011121314151617181920import 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()
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:
12345678910111213141516171819202122import 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()
Legendens placering
Argumentet loc styr var legenden visas. Standardvärdet 'best' gör att matplotlib automatiskt väljer en optimal placering.
12345678910111213141516171819202122import 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()
Giltiga värden för loc inkluderar:
|
|
|
|---|---|---|
|
|
|
|
|
|
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'.
Du kan utforska mer i legend() dokumentation
Swipe to start coding
- Märk de lägsta staplarna som
'primary sector'genom att ange rätt nyckelordargument. - Märk staplarna i mitten som
'secondary sector'genom att ange rätt nyckelordargument. - Märk de översta staplarna som
'tertiary sector'genom att ange rätt nyckelordargument. - Placera förklaringen på högra sidan, vertikalt centrerad.
Lösning
Tack för dina kommentarer!
single