Анализ данных • 18 октября 2024 • 5 мин чтения

Библиотека Matplotlib для построения графиков, диаграмм и 3D-моделей

Рассказываем, как с помощью коротких команд строить графики, присваивать заголовки, визуализировать функции и применять другие способы форматирования с помощью инструментов библиотеки Matplotlib.

Библиотека Matplotlib и её назначение

Matplotlib — это библиотека с открытым исходным кодом для визуализации данных в Python. С помощью неё можно создавать точечные и круговые диаграммы, линейные графики, гистограммы, диаграммы ошибок, 3D-графики. Готовые результаты визуализации можно экспортировать в форматах PDF, SVG, JPG, PNG, BMP и GIF.

Для работы с Matplotlib не требуются сложные протоколы. Библиотека помогает визуализировать большие объёмы данных с помощью коротких команд. Поэтому Matplotlib используют как замену MATLAB, более сложного инструмента для визуализации.

Научиться визуализировать данные можно на курсе «Аналитик данных». За семь месяцев студенты при поддержке опытных наставников и кураторов освоят язык программирования Python, научатся проводить А/B-тесты, использовать библиотеку Matplotlib и др. По окончании курса студенты получат диплом о профессиональной переподготовке.

Типы графиков и диаграмм в Matplotlib

Полный список графиков и диаграмм есть на сайте Matplotlib. Мы рассмотрим некоторые из них.

Диаграмма рассеяния — отображение взаимосвязи между двумя переменными. Каждый объект данных представлен точкой на графике, где координаты точки соответствуют значениям этих переменных. Библиотека matplotlib предоставляет метод scatter(), который помогает проиллюстрировать взаимозависимость между переменными и то, как изменения одной переменной могут повлиять на другую.

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

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

Пример столбчатой диаграммы в Matplotlib. Источник

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

Библиотека matplotlib предоставляет метод pie(), с помощью которого можно создать круговую диаграмму с переменными и вложенную диаграмму. Это можно сделать, наложив несколько круговых диаграмм с разными радиусами. Внешняя круговая диаграмма будет включать основные категории, а внутренняя — подкатегории. Такую структуру обычно применяют для отображения коэффициентов внутри коэффициентов.

Пример круговой диаграммы в Matplotlib. Источник

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

Пример линейного графика в Matplotlib. Источник

3D-графики — визуализация трёхмерных объектов и сцен с помощью компьютерной графики. Такие графики подходят, например, для визуализации реалистичных персонажей и окружения, объектов.

Пример 3D-графика в Matplotlib. Источник

Основы и старт работы в Matplotlib

Установить Matplotlib нужно вместе с пакетом Pyplot — модулем библиотеки Matplotlib в Python. Он помогает встраивать в графики различные компоненты без применения длинных кодов. Например, можно создавать метки, линии, точки и т. д. В коде Pyplot отображается как matplotlib.pyplot.

В некоторых программах Matplotlib и Pyplot установлены по умолчанию. Например, в Google Colab и Jupyter Notebook библиотека и модуль уже есть. Для других программ есть короткие команды для импорта Matplotlib и Pyplot:

  • pip3 install matplotlib — импорт Matplotlib.

  • import matplotlib.pyplot as plt — импорт Pyplot.

Настройка графиков

Рассмотрим настройки диаграммы рассеивания, столбчатой и круговой диаграмм, линейного и 3D-графиков.

Диаграмма рассеивания. Для примера создадим диаграмму рассеивания с координатами X и Y, точки будут отображены синим цветом.

import matplotlib.pyplot as plt

x = [5, 7, 8, 7, 2, 17, 2, 9,
4, 11, 12, 9, 6]

y = [99, 86, 87, 88, 100, 86,
103, 87, 94, 78, 77, 85, 86]

plt.scatter(x, y, c ="blue")

# To show the plot
plt.show()

Столбчатая диаграмма. Для примера создадим диаграмму количества проданных товаров в пяти филиалах магазина: A (23 шт.), B (45 шт.), C (12 шт.), D (67 шт.), E (34 шт.). Код будет таким:

categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 12, 67, 34]

plt.bar(categories, values)
plt.show()

Круговая диаграмма. Создадим диаграмму с марками машин: [AUDI, BMW, FORD, TESLA, JAGUAR, MERCEDES]. Каждая марка автомобиля имеет свою долю на диаграмме: [23, 17, 35, 29, 12, 41]. Код будет таким:

cars = ['AUDI', 'BMW', 'FORD',
'TESLA', 'JAGUAR', 'MERCEDES']

data = [23, 17, 35, 29, 12, 41]

fig = plt.figure(figsize=(10, 7))
plt.pie(data, labels=cars)

plt.show()

Так выглядит круговая диаграмма с марками автомобилей. Источник

Линейный график. Для примера визуализируем функцию y = f(x), где x = 0, 10, 1000. Код будет таким:

fig = plt.figure()
ax = plt.axes()

x = np.linspace(0, 10, 1000)
ax.plot(x, np.sin(x));

Так выглядит линейный график функции. Источник

3D-график. Для примера создадим пружину в 3D-формате. Для этого нужно импортировать набор инструментов mplot3d. После этого настроить оси, сетку и метки. Код будет таким:

import numpy as np
from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt
plt.style.use('seaborn-poster')
fig = plt.figure(figsize = (10,10))
ax = plt.axes(projection='3d')
plt.show()
fig = plt.figure(figsize = (8,8))
ax = plt.axes(projection='3d')
ax.grid()
t = np.arange(0, 10*np.pi, np.pi/50)
x = np.sin(t)
y = np.cos(t)

ax.plot3D(x, y, t)
ax.set_title('3D Parametric Plot')

ax.set_xlabel('x', labelpad=20)
ax.set_ylabel('y', labelpad=20)
ax.set_zlabel('t', labelpad=20)

plt.show()

Пример 3D-фигуры с помощью библиотеки Matplotlib. Источник

Примеры использования

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

Диаграмма рассеивания с заголовком и метками осей. Создадим диаграмму с помощью Matplotlib и NumPy — он генерирует случайные данные для координат x и y, цветов и размеров. Настроим свойства — цвет, размер, прозрачность и цветовую карту. График будет включать заголовок, метки осей и шкалу интенсивности цвета.

# Импорт NumPy.

import numpy as np

# Генерация случайных данных.

x = np.random.rand(50)— х (случайное число в пределах 50).
y = np.random.rand(50)— у (случайное число в пределах 50).
colors = np.random.rand(50)
sizes = 100 * np.random.rand(50)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.7, cmap='viridis')

# Заголовок и метки осей.

plt.title("Customized Scatter Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

# Отображение шкалы интенсивности цвета.

plt.colorbar(label='Color Intensity')

# Результат.

plt.show()

Столбчатая диаграмма с форматированием расстояния между столбцами. Для этого в функцию plt.bar нужно добавить ширину (width). Допустим, ширина между столбцами будет 0,5. Код будет таким:

categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 12, 67, 34]

plt.bar(categories, values, width=0.5)
plt.show()

До форматирования расстояния между столбцами было слишком маленьким. Источник.

Результат после форматирования. Источник

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

plt.plot(x, np.sin(x))
plt.title("A Sine Curve")
plt.xlabel("x")
plt.ylabel("sin(x)");

Пример линейного графика с заголовком. Источник

Трёхмерная диаграмма рассеивания. Для примера пропишем переменные: 50 точек данных для x, y и z; цвет — красный. Код будет таким:

x = np.random.random(50)
y = np.random.random(50)
z = np.random.random(50)

fig = plt.figure(figsize = (10,10))
ax = plt.axes(projection='3d')
ax.grid()

ax.scatter(x, y, z, c = 'r', s = 50)
ax.set_title('3D Scatter Plot')

# Set axes label
ax.set_xlabel('x', labelpad=20)
ax.set_ylabel('y', labelpad=20)
ax.set_zlabel('z', labelpad=20)

plt.show()

Пример построения трёхмерной диаграммы рассеивания. Источник

Диаграмма рассеивания с несколькими наборами данных. Для примера возьмём два разных набора данных, каждый из которых имеет свой набор координат x и y:

1. x1 = [89, 43, 36, 36, 95, 10, 66, 34, 38, 20]; y1 = [21, 46, 3, 35, 67, 95, 53, 72, 58, 10].
2. x2 = [26, 29, 48, 64, 6, 5, 36, 66, 72, 40]; y2 = [26, 34, 90, 33, 38,20, 56, 2, 47, 15].

x1 = [89, 43, 36, 36, 95, 10,
66, 34, 38, 20]

y1 = [21, 46, 3, 35, 67, 95,
53, 72, 58, 10]

x2 = [26, 29, 48, 64, 6, 5,
36, 66, 72, 40]

y2 = [26, 34, 90, 33, 38,
20, 56, 2, 47, 15]

plt.scatter(x1, y1, c ="pink",
linewidths = 2,
marker ="s",
edgecolor ="green",
s = 50)

plt.scatter(x2, y2, c ="yellow",
linewidths = 2,
marker ="^",
edgecolor ="red",
s = 200)

plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

Диаграмма рассеяния с несколькими наборами данных. Источник

Статью подготовили:
Валентина Бокова
Яндекс Практикум
Редактор
Анастасия Павлова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Fri Nov 15 2024 15:28:49 GMT+0300 (Moscow Standard Time)