Рубрики
Без рубрики

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

В этом уроке мы рассмотрим несколько примеров того, как добавить легенду к фигуре/сюжету Matplotlib. Мы также добавим легенду вне осей, используя bbox_to_anchor с loc.

Автор оригинала: David Landup.

Добавить легенду к рисунку в 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 , а также косинусная функция в том же интервале и шаге. Запуск этого кода дает:

синусоидальная визуализация python

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

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

Давайте добавим к этому сюжету легенду. Во-первых, мы хотим пометить эти переменные, чтобы мы могли ссылаться на эти метки в легенде. Затем мы можем просто вызвать 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

Обратите внимание, что легенда автоматически помещается в единственное свободное пространство, где волны не будут проходить по ней.

Настройка легенды в 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()

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

настройка легенды в matplotlib

Здесь мы использовали аргумент loc , чтобы указать, что мы хотели бы поместить легенду в верхний правый угол. Другие принятые значения: верхний левый , нижний левый , верхний правый , нижний правый , верхний центр , нижний центр , центральный левый и центральный правый .

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

Добавление условных обозначений вне осей

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

В таких случаях можно поместить условные обозначения вне осей и вдали от составляющих их элементов. Это делается с помощью аргумента box_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()

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

добавление условных обозначений вне осей

Аргумент box_to_anchor сам принимает несколько аргументов. Во – первых, он принимает кортеж, который допускает до 4 элементов. Здесь мы можем указать x , y , ширину и высоту легенды.

Мы только установили значения x и y , чтобы сместить его -0.10 ниже осей, и 0.5 с левой стороны ( 0 будучи левой рукой коробки и 1 правая сторона).

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

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

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

добавить условные обозначения вне осей одним цветом

Примечание: Аргумент |/box_to_anchor используется рядом с аргументом loc . Аргумент loc поместит легенду на основе box_to_anchor . В нашем случае мы поместили его в центр нового, смещенного местоположения пограничного ящика.

Вывод

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

Если вы заинтересованы в визуализации данных и не знаете, с чего начать, обязательно ознакомьтесь с нашей связкой книг по Визуализации данных в Python :

Визуализация данных в Python

Визуализация данных в Python с Matplotlib и Pandas – это книга, предназначенная для того, чтобы познакомить абсолютных новичков с Pandas и Matplotlib, обладающих базовыми знаниями Python, и позволить им создать прочную основу для продвинутой работы с библиотеками тезисов-от простых сюжетов до анимированных 3D-сюжетов с интерактивными кнопками.

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

Визуализация данных в Python , книга для начинающих и промежуточных разработчиков Python, проведет вас через простые манипуляции с данными с Пандами, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет вам, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair. Более конкретно, в течение 11 глав эта книга охватывает 9 библиотек Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas и VisPy.

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