Вступление
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
, а также косинусную функцию с тем же интервалом и
шагом. Выполнение этого кода дает:
{.ezlazyload}
Теперь было бы очень полезно пометить их и добавить легенду, чтобы тому, кто не писал этот код, было легче различить, что есть что.
Добавление легенды к фигуре в 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()
Теперь, если мы запустим код, на графике появится легенда:
{.ezlazyload}
Обратите внимание, как легенда была автоматически помещена в единственное свободное место, где волны не наезжают на нее.
Настроить легенду в 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()
Это приводит к:
{.ezlazyload}
Здесь мы использовали loc
чтобы указать, что мы хотим поместить
легенду в правом верхнем углу. Другие допустимые значения: upper left
, lower left
, upper right
, lower right
, upper center
,
lower center
, center 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()
Это приводит к:
{.ezlazyload}
bbox_to_anchor
принимает несколько аргументов. Во-первых, он принимает
кортеж, который может содержать до 4 элементов. Здесь мы можем указать
x
, y
, width
и height
легенды.
Мы установили только значения x
и y
, чтобы сместить его на -0.10
ниже осей и 0.5
с левой стороны ( 0
- левая сторона поля, а 1
-
правая сторона).
Настраивая их, вы можете установить легенду в любом месте. Внутри коробки или за ее пределами.
Затем мы установили для shadow
значение False
. Это используется,
чтобы указать, хотим ли мы, чтобы небольшая тень отображалась под
легендой или нет.
Наконец, мы установили аргумент ncol
2
. Это определяет количество
меток в столбце. Поскольку у нас есть две метки и мы хотим, чтобы они
находились в одном столбце, мы установили для него значение 2
. Если
бы мы изменили этот аргумент на 1
, они были бы помещены один над
другим:
{.ezlazyload}
Примечание. Аргумент bbox_to_anchor
используется вместе с
аргументом loc
loc
поместит легенду на основе bbox_to_anchor
. В
нашем случае мы поместили его в center
нового смещенного
местоположения рамки.
Заключение
В этом уроке мы рассмотрели, как добавить легенду к вашим графикам
Matplotlib. Во-первых, мы позволили Matplotlib определить, где должна
располагаться легенда, после чего мы использовали bbox_to_anchor
чтобы
указать наше собственное местоположение за пределами осей.
Если вас интересует визуализация данных и вы не знаете, с чего начать, обязательно ознакомьтесь с нашим комплектом книг по визуализации данных в Python{.ebook-link} :
::: {style=“border: 1px solid #ebebeb;padding: 15px;”} {.ebook-link}
Визуализация данных в Python
::: {.row} ::: {.col-md-4 .col-xs-12} {.ezlazyload .img-responsive .center-block} :::
::: {.col-md-8 .col-xs-12 .my-auto} Ограниченная по времени скидка: 2 к 1, сэкономьте 50%!
✅ 30-дневная гарантия возврата денег без вопросов
✅ от начального до продвинутого
✅ Регулярно обновляется бесплатно (последнее обновление в апреле 2021 г.)
✅ Обновлено с бонусными ресурсами и руководствами ::: ::: :::
Визуализация данных в Python с помощью Matplotlib и Pandas - это книга, предназначенная для абсолютных новичков в работе с Pandas и Matplotlib с базовыми знаниями Python и позволяющая им создать прочную основу для расширенной работы с этими библиотеками - от простых графиков до анимированных трехмерных графиков с интерактивными кнопки.
Он служит подробным руководством, которое научит вас всему, что вам нужно знать о Pandas и Matplotlib, в том числе о том, как создавать типы графиков, которые не встроены в саму библиотеку.
Книга «Визуализация данных в Python» , книга для начинающих и средних разработчиков Python, проведет вас через простые манипуляции с данными с помощью Pandas, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair. В частности, на протяжении 11 глав эта книга охватывает 9 библиотек Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas и VisPy.
Он служит уникальным практическим руководством по визуализации данных в виде множества инструментов, которые вы можете использовать в своей карьере.