Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Робота з легендою | Розділ
Візуалізація Даних з Matplotlib

bookРобота з легендою

Коли на графіку присутні декілька елементів, додавання легенди допомагає уточнити, що саме представляє кожен елемент. matplotlib пропонує кілька способів створення легенди.

Перший варіант

Можна визначити всі підписи безпосередньо у 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

Це створює легенду у верхньому лівому куті шляхом передачі списку міток у plt.legend().

Другий варіант

Можна також призначати мітки безпосередньо у функціях побудови графіків, використовуючи параметр 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

Тут plt.legend() автоматично збирає підписи з побудованих елементів.

Третій варіант

Можна також встановити підписи за допомогою методу set_label() повернутого художника:

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

Розташування легенди

Аргумент loc визначає, де буде розташована легенда. Значення за замовчуванням 'best' дозволяє matplotlib автоматично вибрати оптимальне місце.

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

Допустимі значення для loc включають:

'upper left'

'upper center'

'upper right'

'center left'

'center'

'center right'

'lower left'

'lower center'

'lower right'

Ви також можете використовувати опцію 'best', яка автоматично розміщує легенду в місці з найменшим перекриттям із відображеними даними. Крім того, використання 'right' дає той самий результат, що й 'center right'.

Note
Дізнайтеся більше

Ви можете дізнатися більше у legend() документації

Завдання

Swipe to start coding

  1. Позначити найнижчі стовпці як 'primary sector', вказавши відповідний іменований аргумент.
  2. Позначити стовпці посередині як 'secondary sector', вказавши відповідний іменований аргумент.
  3. Позначити найвищі стовпці як 'tertiary sector', вказавши відповідний іменований аргумент.
  4. Розмістити легенду праворуч, по центру вертикалі.

Рішення

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 10
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

close

bookРобота з легендою

Свайпніть щоб показати меню

Коли на графіку присутні декілька елементів, додавання легенди допомагає уточнити, що саме представляє кожен елемент. matplotlib пропонує кілька способів створення легенди.

Перший варіант

Можна визначити всі підписи безпосередньо у 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

Це створює легенду у верхньому лівому куті шляхом передачі списку міток у plt.legend().

Другий варіант

Можна також призначати мітки безпосередньо у функціях побудови графіків, використовуючи параметр 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

Тут plt.legend() автоматично збирає підписи з побудованих елементів.

Третій варіант

Можна також встановити підписи за допомогою методу set_label() повернутого художника:

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

Розташування легенди

Аргумент loc визначає, де буде розташована легенда. Значення за замовчуванням 'best' дозволяє matplotlib автоматично вибрати оптимальне місце.

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

Допустимі значення для loc включають:

'upper left'

'upper center'

'upper right'

'center left'

'center'

'center right'

'lower left'

'lower center'

'lower right'

Ви також можете використовувати опцію 'best', яка автоматично розміщує легенду в місці з найменшим перекриттям із відображеними даними. Крім того, використання 'right' дає той самий результат, що й 'center right'.

Note
Дізнайтеся більше

Ви можете дізнатися більше у legend() документації

Завдання

Swipe to start coding

  1. Позначити найнижчі стовпці як 'primary sector', вказавши відповідний іменований аргумент.
  2. Позначити стовпці посередині як 'secondary sector', вказавши відповідний іменований аргумент.
  3. Позначити найвищі стовпці як 'tertiary sector', вказавши відповідний іменований аргумент.
  4. Розмістити легенду праворуч, по центру вертикалі.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 10
single

single

some-alt