Seaborn и Matplotlib: эффективная визуализация данных в Python

Раздел: Библиотеки -> matplotlib и seaborn

Основные методы построения графиков

Как быстро построить линейный график с помощью Matplotlib?

Базовый способ создания графика в Python - использование модуля pyplot из библиотеки Matplotlib. Он предоставляет простой интерфейс, похожий на MATLAB.


import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)
plt.xlabel("Ось X")
plt.ylabel("Ось Y")
plt.title("Простой линейный график")
plt.show()
    

библиотека для построения графиков python (библиотека для построения графиков в python (matplotlib))

Пояснение: данные передаются в plt.plot(), затем добавляются подписи и заголовок. Вызов plt.show() отображает окно с графиком.

Типичная ошибка: забыть вызвать plt.show() - график не отобразится. В Jupyter Notebook можно использовать %matplotlib inline, чтобы показывать графики внутри ячейки.

Как построить столбчатую диаграмму?

Столбчатые диаграммы удобны для сравнения категориальных данных. Используется функция plt.bar().


import matplotlib.pyplot as plt

категории = ['Яблоки', 'Бананы', 'Апельсины']
количество = [25, 15, 30]

plt.bar(категории, количество, color='skyblue')
plt.xlabel('Фрукты')
plt.ylabel('Количество')
plt.title('Продажи фруктов')
plt.show()
    

библиотеки для визуализации данных python (библиотеки для визуализации данных в python (matplotlib, seaborn, plotly))

Параметр color задаёт цвет столбцов. Для горизонтальной ориентации используйте plt.barh().

Проблема: если данные содержат большое количество категорий, столбцы могут наложиться. Решение - изменить ширину через параметр width или повернуть подписи оси X (plt.xticks(rotation=45)).

Как построить несколько графиков на одном рисунке?

Для сравнения нескольких зависимостей удобно разместить графики в сетке. Используется plt.subplot() или plt.subplots().


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)

fig, axes = plt.subplots(2, 2, figsize=(10, 6))

axes[0,0].plot(x, np.sin(x), 'r')
axes[0,0].set_title('Синус')
axes[0,1].plot(x, np.cos(x), 'b')
axes[0,1].set_title('Косинус')
axes[1,0].plot(x, np.exp(x/10), 'g')
axes[1,0].set_title('Экспонента')
axes[1,1].plot(x, x**2, 'k')
axes[1,1].set_title('Квадрат')

plt.tight_layout()
plt.show()
    

библиотеки визуализации python (библиотеки визуализации данных python)

plt.subplots(2,2) создаёт 4 подграфика. Обращение к каждому через axes[i,j]. tight_layout() автоматически регулирует расстояния.

Ошибка: если индексы выходят за пределы массива, возникнет IndexError. Проверяйте размерность созданной сетки.

Как настроить стиль графика с помощью Seaborn?

Seaborn упрощает создание эстетичных графиков с настройками по умолчанию. Подключается поверх Matplotlib.


import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme(style="darkgrid")

tips = sns.load_dataset("tips")
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time")
plt.title("Чаевые vs Счёт")
plt.show()
    

построить график по коду python (построение графика по коду python)

sns.set_theme() задаёт общий стиль. scatterplot - точечный график с автоматической цветовой легендой.

Проблема: если данные не встроенного датасета, нужно передать DataFrame с правильными именами столбцов. Ошибка KeyError - проверьте написание колонок.

Как сохранить график в файл?

Для сохранения вместо plt.show() используйте plt.savefig().


plt.plot([1,2,3],[4,5,6])
plt.savefig('graph.png', dpi=300, bbox_inches='tight')
    

Параметр dpi задаёт разрешение, bbox_inches='tight' обрезает лишние поля. Поддерживаются форматы PNG, PDF, SVG.

Ошибка: если вызвать savefig() после show(), файл может быть пустым. Сохраняйте до отображения.

- Python сделать график (построение графика в python)
- Python нарисовать график (построение графика в python)
- визуализация данных с помощью python и javascript (визуализация данных с помощью python и javascript)

Расширенные примеры построения графиков

Пример 1: Анимация графика

Создание анимированного синусоидального сигнала с помощью FuncAnimation.

Пример

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
x = np.linspace(0, 2*np.pi, 100)
line, = ax.plot(x, np.sin(x))

def update(frame):
    line.set_ydata(np.sin(x + frame/10))
    return line,

ani = FuncAnimation(fig, update, frames=100, interval=50)
# для сохранения: ani.save('sin_animation.gif', writer='pillow')
plt.show()
    

Функция update изменяет y-данные на каждом кадре. interval задаёт задержку в мс.

Результат: анимированная синусоида, движущаяся вправо.

Пример 2: Гистограмма с KDE и наложенной нормальной кривой

Seaborn позволяет совместить гистограмму и оценку плотности распределения (KDE).

Пример

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

data = np.random.normal(0, 1, 1000)
sns.histplot(data, kde=True, bins=30, color='purple', edgecolor='white')
plt.title('Распределение с KDE')
plt.show()
    

kde=True добавляет линию плотности. bins - количество столбцов.

Пример 3: Тепловая карта корреляций

Визуализация матрицы корреляции с помощью sns.heatmap.

Пример

import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(5,5), columns=['A','B','C','D','E'])
corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('Тепловая карта корреляций')
plt.show()
    

annot=True выводит значения в ячейках. cmap - цветовая схема.

Пример 4: Пользовательские настройки осей и легенды

Детальная настройка внешнего вида: изменение шкалы, добавление сетки, кастомизация легенды.

Пример

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 50)
y1 = np.exp(x)
y2 = np.exp(2*x)

plt.plot(x, y1, label='exp(x)', linewidth=2)
plt.plot(x, y2, label='exp(2x)', linestyle='--', color='red')
plt.yscale('log')  # логарифмическая шкала по Y
plt.grid(True, which='both', linestyle=':', alpha=0.6)
plt.legend(loc='upper left', frameon=True, fancybox=True, shadow=True)
plt.title('Экспоненциальные функции (логарифмическая шкала)')
plt.show()
    

Пример 5: График с доверительным интервалом (Seaborn)

Использование sns.lineplot с автоматическим построением доверительной полосы.

Пример

import seaborn as sns
import pandas as pd
import numpy as np

np.random.seed(42)
df = pd.DataFrame({
    'time': np.tile(np.arange(10), 5),
    'value': np.random.normal(0, 1, 50).cumsum(),
    'group': np.repeat(['A','B','C','D','E'], 10)
})
sns.lineplot(data=df, x='time', y='value', hue='group', err_style='band', ci=95)
plt.title('Линии тренда с доверительным интервалом 95%')
plt.show()
    

Параметр ci=95 показывает 95% доверительный интервал (затенённая область).

Построение графика в Python - comments

En
Python нарисовать график (python)