DevGang
Авторизоваться

Добавить легенду к рисунку в Matplotlib 

Matplotlib - одна из наиболее широко используемых библиотек визуализации данных в Python. Обычно при визуализации более чем одной переменной вы хотите добавить к графику легенду, объясняющую, что представляет каждая переменная.

В этой статье мы рассмотрим, как добавить легенду к графику Matplotlib.

Создание сюжета

Давайте сначала создадим простой график с двумя переменными:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax.plot(y, color='blue')
ax.plot(z, color='black')

plt.show()

Здесь мы построили синусоидальную функцию, начиная от 0 до 10 с шагом 0.1, а также косинусную функцию в том же интервале и шаге. Запуск этого кода дает:

Теперь было бы очень полезно пометить их и добавить легенду, чтобы тому, кто не писал этот код, было легче определить, что есть что.

Добавление легенды к фигуре в Matplotlib

Добавим легенду к этому сюжету. Во-первых, нам нужна переменная label, чтобы мы могли ссылаться на эти метки в легенде. Тогда мы можем просто вызвать legend() на объект ax, чтобы добавить легенду:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')
leg = ax.legend()

plt.show()

Теперь, если мы запустим код, на графике появится легенда:

Обратите внимание, как легенда была автоматически помещена в единственное свободное место, где волны не наезжают на нее.

Настроить легенду в Matplotlib

Легенда добавлена, но немного загромождена. Давайте удалим границу вокруг него и переместим в другое место, а также изменим размер рисунка:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(12, 6))

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')
leg = ax.legend(loc='upper right', frameon=False)

plt.show()

Это приводит к:

Здесь мы использовали аргумент loc, чтобы указать, что мы хотим поместить легенду в правом верхнем углу. Другие параметры, которые принимаются: upper leftlower leftupper rightlower rightupper centerlower centercenter leftи center right.

Кроме того, вы можете использовать center, чтобы поместить его в мертвую точку или best, что-бы разместить легенду в «лучшем» свободном месте, чтобы она не перекрывалась ни с одним из других элементов. По умолчанию выбрано best.

Добавить легенду за пределами граффика

Иногда бывает сложно поместить легенду в рамку графика. Возможно, здесь происходит много элементов, и все полотно заполнено важными данными.

В таких случаях вы можете разместить легенду за пределами осей и вдали от элементов, которые ее составляют. Это делается с помощью аргумента bbox_to_anchor, который указывает, где мы хотим привязать легенду:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(12, 6))

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')
leg = ax.legend(loc='center', bbox_to_anchor=(0.5, -0.10), shadow=False, ncol=2)

plt.show()

Это приводит к:

Аргумент bbox_to_anchor принимает сам несколько аргументов. Во-первых, он принимает кортеж, который может содержать до 4 элементов. Здесь мы можем указать xy, width и height легенды.

Мы можем установить только значение x и y, чтобы сместить его на -0.10 от верхнего края, и 0.5 от левого.

Настраивая их, вы можете установить легенду в любом месте. Внутри box или за ее пределами.

Затем мы установили shadow значение False. Это используется, чтобы указать, хотим ли мы, чтобы небольшая тень отображалась под легендой или нет.

Наконец, мы установили аргументу ncol значение 2. Это определяет количество меток в столбце. Поскольку у нас есть две метки и мы хотим, чтобы они находились в одном столбце, мы установили для него значение 2. Если бы мы изменили этот аргумент на 1, они были бы размещены один над другим:

Вывод

В этом уроке мы рассмотрели, как добавить легенду к вашим графикам Matplotlib. Во-первых, мы позволили Matplotlib определить, где должна располагаться легенда, после чего мы использовали аргумент bbox_to_anchor для указания нашего собственного местоположения за пределами осей.

Источник:

#Python #Data Visualization #Matplotlib
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

Оплатив хостинг 25$ в подарок вы получите 100$ на счет

Получить