Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Додавання Легенди | Налаштування Графіків
Ультимативна Візуалізація з Python

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

book
Додавання Легенди

Коли на графіку присутні кілька елементів, часто доцільно їх підписати для кращої зрозумілості. Легенда виконує цю функцію, надаючи компактну область, яка пояснює різні компоненти графіка.

Нижче наведено три поширені способи створення легенди у matplotlib.

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

Розгляньте наступний приклад для кращого розуміння концепції:

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np # Define categories and data 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]) # Set positions and bar width positions = np.arange(len(questions)) width = 0.3 # Create the grouped bar chart for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) # Adjust x-axis ticks to the center of groups plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Setting the labels for the legend explicitly plt.legend(['positive answers', 'negative answers']) plt.show()
copy

У верхньому лівому куті легенда пояснює різні стовпці на діаграмі. Цю легенду створюють за допомогою функції plt.legend(), куди першим аргументом передають список підписів — зазвичай його називають labels.

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

Інший спосіб полягає у вказанні параметра label під час кожного виклику функції побудови графіка, наприклад, bar у нашому випадку:

1234567891011121314151617181920212223242526272829
import matplotlib.pyplot as plt import numpy as np # Define x-axis categories and their positions questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) # Define answers for each category yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) labels = ['positive answers', 'negative answers'] # Set the width for each bar width = 0.3 # Plot each category with a label for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width, label=labels[i]) # Set x-axis ticks and labels at the center of each group plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Automatically create legend from label parameters plt.legend() plt.show()
copy

Тут plt.legend() автоматично визначає елементи, які потрібно додати до легенди, та їх підписи; усі елементи з вказаним параметром label включаються.

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

Насправді існує ще один варіант — використання методу set_label() для художнього елемента (у нашому прикладі — bar):

1234567891011121314151617181920212223242526
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 = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i in range(len(answers)): bar = plt.bar(positions + width * i, answers[i], width) bar.set_label(labels[i]) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

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

Існує ще один важливий іменований аргумент функції legend()loc, який визначає розташування легенди. Його значення за замовчуванням — best, що "доручає" matplotlib автоматично вибрати найкраще місце для легенди, щоб уникнути перекриття з даними.

1234567891011121314151617181920212223242526
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 = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i, label in enumerate(labels): bars = plt.bar(positions + width * i, answers[i], width) bars.set_label(label) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

У цьому прикладі легенда розташована у верхньому центрі графіка. Інші допустимі значення параметра loc включають:

  • 'upper right', 'upper left', 'lower left';

  • 'lower right', 'right';

  • 'center left', 'center right', 'lower center', 'center'.

Note
Вивчайте більше

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

Завдання

Swipe to start coding

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

Рішення

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

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

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

Секція 3. Розділ 2

Запитати АІ

expand
ChatGPT

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

book
Додавання Легенди

Коли на графіку присутні кілька елементів, часто доцільно їх підписати для кращої зрозумілості. Легенда виконує цю функцію, надаючи компактну область, яка пояснює різні компоненти графіка.

Нижче наведено три поширені способи створення легенди у matplotlib.

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

Розгляньте наступний приклад для кращого розуміння концепції:

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np # Define categories and data 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]) # Set positions and bar width positions = np.arange(len(questions)) width = 0.3 # Create the grouped bar chart for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) # Adjust x-axis ticks to the center of groups plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Setting the labels for the legend explicitly plt.legend(['positive answers', 'negative answers']) plt.show()
copy

У верхньому лівому куті легенда пояснює різні стовпці на діаграмі. Цю легенду створюють за допомогою функції plt.legend(), куди першим аргументом передають список підписів — зазвичай його називають labels.

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

Інший спосіб полягає у вказанні параметра label під час кожного виклику функції побудови графіка, наприклад, bar у нашому випадку:

1234567891011121314151617181920212223242526272829
import matplotlib.pyplot as plt import numpy as np # Define x-axis categories and their positions questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) # Define answers for each category yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) labels = ['positive answers', 'negative answers'] # Set the width for each bar width = 0.3 # Plot each category with a label for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width, label=labels[i]) # Set x-axis ticks and labels at the center of each group plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Automatically create legend from label parameters plt.legend() plt.show()
copy

Тут plt.legend() автоматично визначає елементи, які потрібно додати до легенди, та їх підписи; усі елементи з вказаним параметром label включаються.

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

Насправді існує ще один варіант — використання методу set_label() для художнього елемента (у нашому прикладі — bar):

1234567891011121314151617181920212223242526
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 = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i in range(len(answers)): bar = plt.bar(positions + width * i, answers[i], width) bar.set_label(labels[i]) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

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

Існує ще один важливий іменований аргумент функції legend()loc, який визначає розташування легенди. Його значення за замовчуванням — best, що "доручає" matplotlib автоматично вибрати найкраще місце для легенди, щоб уникнути перекриття з даними.

1234567891011121314151617181920212223242526
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 = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i, label in enumerate(labels): bars = plt.bar(positions + width * i, answers[i], width) bars.set_label(label) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

У цьому прикладі легенда розташована у верхньому центрі графіка. Інші допустимі значення параметра loc включають:

  • 'upper right', 'upper left', 'lower left';

  • 'lower right', 'right';

  • 'center left', 'center right', 'lower center', 'center'.

Note
Вивчайте більше

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

Завдання

Swipe to start coding

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

Рішення

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

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

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

Секція 3. Розділ 2
Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Ми дуже хвилюємося, що щось пішло не так. Що трапилося?
some-alt