Что такое Matplotlib и зачем он нужен?
Matplotlib — это мощная и гибкая библиотека Python для создания статических, интерактивных и анимированных визуализаций. Она позволяет строить широкий спектр графиков, от простых линейных графиков до сложных трехмерных визуализаций. Matplotlib является основой для многих других библиотек визуализации данных в Python, таких как Seaborn и Pandas, и широко используется в научных исследованиях, анализе данных и машинном обучении.
Matplotlib дает возможность наглядно представить данные, выявить закономерности и тенденции, а также эффективно донести результаты анализа до аудитории. Представьте, например, что вы анализируете данные рекламных кампаний. Matplotlib поможет визуализировать эффективность различных каналов привлечения трафика, динамику изменения CTR и конверсии, а также сравнить результаты разных кампаний.
Установка Matplotlib
Установить Matplotlib можно с помощью pip:
pip install matplotlib
Рекомендуется использовать виртуальное окружение для изоляции зависимостей проекта.
Импорт библиотеки Matplotlib
Для начала работы необходимо импортировать библиотеку:
import matplotlib.pyplot as plt
plt – это общепринятое сокращение для matplotlib.pyplot.
Создание первого графика
Основные элементы графика: оси, заголовок, легенда
График Matplotlib состоит из нескольких ключевых элементов:
- Оси (Axes): Области, на которых отображаются данные. Каждая ось имеет свою шкалу.
- Заголовок (Title): Описывает содержание графика.
- Легенда (Legend): Поясняет, какие данные представлены на графике.
- Метки осей (Axis labels): Описывают значения, отображаемые на осях.
Функция plot(): построение графиков по точкам
Функция plot() является основной функцией для построения графиков. Она принимает на вход данные (координаты x и y) и строит график по этим точкам.
import matplotlib.pyplot as plt
from typing import List
def plot_example(x_data: List[float], y_data: List[float], title: str) -> None:
"""Plots data and adds a title."""
plt.plot(x_data, y_data)
plt.title(title)
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()
# Пример данных
x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 3, 5]
plot_example(x, y, "Простой график")
Настройка внешнего вида графика: цвет, стиль линии, маркеры
Внешний вид графика можно настроить с помощью различных параметров функции plot():
color(илиc): Цвет линии.linestyle(илиls): Стиль линии (например, ‘solid’, ‘dashed’, ‘dotted’).marker: Маркер для обозначения точек (например, ‘o’, ‘x’, ‘+’).
import matplotlib.pyplot as plt
from typing import List
def plot_styled_example(x_data: List[float], y_data: List[float], title: str) -> None:
"""Plots data with specified style and adds a title."""
plt.plot(x_data, y_data, color='red', linestyle='--', marker='o')
plt.title(title)
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()
# Пример данных
x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 3, 5]
plot_styled_example(x, y, "График со стилем")
Сохранение графика в файл
Готовый график можно сохранить в файл с помощью функции savefig():
import matplotlib.pyplot as plt
from typing import List
def save_plot_example(x_data: List[float], y_data: List[float], filename: str) -> None:
"""Plots data and saves it to a file."""
plt.plot(x_data, y_data)
plt.title("График")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.savefig(filename)
plt.close() # Closes the plot after saving to free memory
# Пример данных
x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 3, 5]
save_plot_example(x, y, "my_plot.png")
Поддерживаются различные форматы файлов, такие как PNG, JPG, PDF и SVG.
Типы графиков в Matplotlib
Matplotlib поддерживает множество различных типов графиков для визуализации данных.
Линейные графики (Line plots)
Используются для отображения изменения данных во времени или по отношению к другой переменной. Хорошо подходят для отображения трендов.
Точечные диаграммы (Scatter plots)
Используются для отображения взаимосвязи между двумя переменными. Каждая точка на диаграмме представляет собой одно наблюдение.
Столбчатые диаграммы (Bar plots)
Используются для сравнения значений различных категорий. Высота столбца соответствует значению категории.
Гистограммы (Histograms)
Используются для отображения распределения данных. Гистограмма показывает, как часто встречаются значения в различных диапазонах.
Круговые диаграммы (Pie charts)
Используются для отображения доли каждой категории в общей сумме.
Настройка графика: расширенные возможности
Подписи к осям и заголовок графика
Для добавления подписей к осям и заголовка используются функции xlabel(), ylabel() и title() соответственно.
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6])
plt.xlabel("Время (с)")
plt.ylabel("Значение")
plt.title("График зависимости значения от времени")
plt.show()
Добавление легенды
Легенда поясняет, какие данные представлены на графике. Для добавления легенды необходимо указать параметр label в функции plot() и вызвать функцию legend().
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6], label="Линия 1")
plt.plot([1, 2, 3], [6, 5, 4], label="Линия 2")
plt.legend()
plt.show()
Изменение масштаба осей
Масштаб осей можно изменить с помощью функций xlim() и ylim().
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6])
plt.xlim(0, 4) # Установка диапазона оси X от 0 до 4
plt.ylim(3, 7) # Установка диапазона оси Y от 3 до 7
plt.show()
Добавление сетки
Для улучшения читаемости графика можно добавить сетку с помощью функции grid().
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6])
plt.grid(True)
plt.show()
Работа с несколькими графиками на одном рисунке (subplots)
Для отображения нескольких графиков на одном рисунке используются функция subplot() или subplots().
import matplotlib.pyplot as plt
# Способ 1: использование subplot()
plt.subplot(1, 2, 1) # 1 строка, 2 столбца, первый график
plt.plot([1, 2, 3], [4, 5, 6])
plt.title("График 1")
plt.subplot(1, 2, 2) # 1 строка, 2 столбца, второй график
plt.plot([1, 2, 3], [6, 5, 4])
plt.title("График 2")
plt.tight_layout() # Автоматическая корректировка расположения графиков
plt.show()
# Способ 2: использование subplots()
fig, axs = plt.subplots(1, 2) # Создает фигуру и оси для двух графиков
axs[0].plot([1, 2, 3], [4, 5, 6])
axs[0].set_title("График 1")
axs[1].plot([1, 2, 3], [6, 5, 4])
axs[1].set_title("График 2")
plt.tight_layout()
plt.show()
Примеры использования Matplotlib
Визуализация математических функций
Matplotlib можно использовать для визуализации математических функций.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-np.pi, np.pi, 256) # Создание массива x от -pi до pi с 256 точками
y = np.sin(x)
plt.plot(x, y)
plt.title("График функции sin(x)")
plt.xlabel("x")
plt.ylabel("sin(x)")
plt.grid(True)
plt.show()
Анализ данных: построение графиков из массивов NumPy и DataFrame Pandas
Matplotlib отлично работает с массивами NumPy и DataFrame Pandas. Пример визуализации данных из DataFrame Pandas:
import matplotlib.pyplot as plt
import pandas as pd
# Пример данных о кликах по рекламе в интернет-маркетинге
data = {
'Кампания': ['A', 'B', 'C', 'D', 'E'],
'Клики': [1500, 2200, 1800, 2500, 1900],
'CTR': [0.02, 0.025, 0.018, 0.022, 0.021]
}
df = pd.DataFrame(data)
# Построение столбчатой диаграммы для кликов
plt.figure(figsize=(10, 6))
plt.bar(df['Кампания'], df['Клики'], color='skyblue')
plt.xlabel('Рекламная кампания')
plt.ylabel('Количество кликов')
plt.title('Клики по рекламным кампаниям')
plt.grid(axis='y', alpha=0.75)
plt.show()
# Построение точечной диаграммы для CTR
plt.figure(figsize=(10, 6))
plt.scatter(df['Кампания'], df['CTR'], color='green', marker='o', s=100) # s - размер маркера
plt.xlabel('Рекламная кампания')
plt.ylabel('CTR')
plt.title('CTR рекламных кампаний')
plt.grid(True)
plt.show()
Создание интерактивных графиков
Matplotlib позволяет создавать интерактивные графики с помощью библиотеки mplcursors. Интерактивные графики позволяют пользователям взаимодействовать с данными, например, просматривать значения точек при наведении курсора.
import matplotlib.pyplot as plt
import numpy as np
import mplcursors
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title("Интерактивный график sin(x)")
mplcursors.cursor(hover=True)
plt.show()