Lä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():
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 också tilldela etiketter direkt i plottningsfunktionerna med 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 in etiketter från de plottade elementen.
Tredje alternativet
Det går även att ange etiketter med metoden set_label() på den returnerade artisten:
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:
'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'center'.
Du kan utforska mer i legend() dokumentation
Swipe to start coding
- Märk de lägsta staplarna som
'primary sector'genom att ange lämpligt nyckelordsargument. - Märk staplarna i mitten som
'secondary sector'genom att ange lämpligt nyckelordsargument. - Märk de översta staplarna som
'tertiary sector'genom att ange lämpligt nyckelordsargument. - Placera förklaringen på högra sidan, centrerad vertikalt.
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
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()`?
Fantastiskt!
Completion betyg förbättrat till 3.85
Lä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():
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 också tilldela etiketter direkt i plottningsfunktionerna med 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 in etiketter från de plottade elementen.
Tredje alternativet
Det går även att ange etiketter med metoden set_label() på den returnerade artisten:
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:
'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'center'.
Du kan utforska mer i legend() dokumentation
Swipe to start coding
- Märk de lägsta staplarna som
'primary sector'genom att ange lämpligt nyckelordsargument. - Märk staplarna i mitten som
'secondary sector'genom att ange lämpligt nyckelordsargument. - Märk de översta staplarna som
'tertiary sector'genom att ange lämpligt nyckelordsargument. - Placera förklaringen på högra sidan, centrerad vertikalt.
Lösning
Tack för dina kommentarer!
single