Разберитесь в структуре и украсьте свои участки

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

Семь пунктов, описанных в этом посте, связаны как со структурой matplotlib, так и с синтаксисом для небольших корректировок графиков.

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

1. Слой сценариев

Matplotlib состоит из трех слоев.

Слой сценариев - это интерфейс matplotlib.pyplot. Когда мы создаем графики с помощью «plt» после следующей команды, мы играем со слоем сценария.

import matplotlib.pyplot as plt

Слой сценариев позволяет относительно легко создавать графики, поскольку он автоматизирует процесс объединения всего. Таким образом, это наиболее широко используемый слой специалистами по обработке данных.

2. Бэкэнд-уровень

Вам не стоит слишком беспокоиться об этом слое, если вы не разработчик. Внутренний уровень состоит из трех абстрактных классов: FigureCanvas, Renderer и Event. Следующая аналогия даст некоторое представление о том, как работает внутренний уровень.

Представьте, что вы хотите нарисовать картину. Вы получаете чистый лист бумаги (FigureCanvas) и кисть (Renderer). Вы спрашиваете друга, что нарисовать (Событие).

3. Слой художника

Этот слой состоит из объекта Artist. Это основной объект Matplotlib. Все, что мы видим на сюжете, является экземпляром объекта художника.

Есть два типа объектов художника:

  • Композитный: фигура, топоры
  • Примитив: линия, круг, текст

4. Рисунок и оси

Фигура - главный объект Художника, и он скрепляет все вместе. Допустим, вы приготовили на ужин 4 разные закуски. Вы не можете служить им руками. Хороший способ сервировки - положить их на тарелку. Тарелка - это объект-фигура, а закуски - это компоненты графика, такие как линия, отметки, метки и т. Д.

Давайте создадим фигуру, используя слой сценария.

import matplotlib.pyplot as plt
plt.figure()
<Figure size 432x288 with 0 Axes>

Мы создали фигуру, но на ней нет ничего, что могло бы составить сюжет. Нам нужно добавить объект Axes в Figure, чтобы создать фактический график.

plt.figure(figsize=(8,5)).add_subplot()

Это все еще пустой график, потому что нет данных. Функция построения графика может использоваться для передачи данных в оси.

arr = np.random.random(100)
plt.figure(figsize=(8,5)).add_subplot().plot(arr)

Мы видели обзор структуры Matplotlib. Следующие советы будут о том, как сделать небольшие корректировки на графиках.

5. Xticks и Yticks

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

Вот пример использования xticks и yticks для изменения графика.

plt.figure(figsize=(10,6))
plt.bar(x=[1,2,3,4], height=[3,5,1,6])
plt.xticks(ticks=[1,2,3,4],
labels=['Sunday','Monday','Tuesday','Wednesday'], rotation="45", fontsize=12)
plt.yticks(ticks=np.arange(10), fontsize=12)

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

Диапазон по оси Y был бы от 0 до 6, если бы мы его не настраивали. Думаю, будет лучше, если наверху будет место. Иногда я использую это пространство для добавления текста или аннотаций.

6. Добавление текста

Текст можно использовать, чтобы указать на что-то или добавить дополнительную информацию к сюжету. Текстовая функция позволяет гибко настраивать расположение, размер шрифта и стиль текста. Мы даже можем поместить текст в рамку.

Следующий код добавит текстовое поле к предыдущему графику.

plt.text(1, 8, '2020 Averages', style='oblique', fontsize=15,
bbox={'facecolor': 'grey', 'alpha': 0.5, 'pad': 5})

Текстовая функция может применяться как к интерфейсу pyplot (plt), так и к объектам Axes.

7. Создание фигуры с частями

В некоторых случаях нам нужно иметь несколько графиков на одной фигуре. Matplotlib предоставляет разные способы создания таких графиков. Функция subplots создает фигуру с набором subplots.

Мы указываем количество строк и столбцов, и создается сетка графиков. Количество подзаголовков - это произведение количества строк и столбцов.

fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2,
                               sharey=True, figsize=(8,5))
ax1.plot(np.random.random(30))
ax2.plot(np.random.random(30)*5)

Поскольку каждый подсюжет назначен объекту осей, мы полностью контролируем их. Следующий код редактирует ax1 и ax2 отдельно.

ax1.set_title("Measurement1", fontsize=14)
ax1.text(1,4, "Before Noon", fontsize=12)
ax2.set_title("Measurement2", fontsize=14)

Примечание: все изображения созданы автором, если не указано иное.

Заключение

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

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

Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.