Автор оригинала: 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
, а также косинусная функция в том же интервале и шаге. Запуск этого кода дает:
Теперь было бы очень полезно пометить их и добавить легенду, чтобы тот, кто не писал этот код, мог легче различить, что есть что.
Добавить легенду к фигуре в 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
Легенда добавлена, но она немного загромождена. Давайте уберем границу вокруг него и переместим его в другое место , а также изменим размер участка :
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
, чтобы указать, что мы хотели бы поместить легенду в верхний правый угол. Другие принятые значения: верхний левый
, нижний левый
, верхний правый
, нижний правый
, верхний центр
, нижний центр
, центральный левый
и центральный правый
.
Кроме того, вы можете использовать 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.
Он служит уникальным практическим руководством по визуализации данных, в изобилии инструментов, которые вы могли бы использовать в своей карьере.