Визуализация данных в Python с использованием Matplotlib и Seaborn

Раздел: Анализ данных -> Matplotlib и Seaborn

Создание графиков в Python: Matplotlib и Seaborn

Основной и наиболее универсальный способ построения графиков в Python - использование библиотеки Matplotlib совместно с Seaborn. Matplotlib предоставляет полный контроль над каждым элементом графика, а Seaborn упрощает создание статистических графиков с красивым оформлением. Для начала работы необходимо импортировать обе библиотеки и настроить отображение графиков (например, в Jupyter Notebook).


import matplotlib.pyplot as plt
import seaborn as sns

# Базовая настройка для Jupyter
%matplotlib inline

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

Построим простейший линейный график. Функция plt.plot() принимает списки координат x и y.


x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.show()

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

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

Как построить столбчатую диаграмму для сравнения категорий?

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


categories = ['A', 'B', 'C', 'D']
values = [23, 45, 12, 37]
plt.bar(categories, values, color='skyblue')
plt.xlabel('Категории')
plt.ylabel('Значения')
plt.title('Пример столбчатой диаграммы')
plt.show()

визуализация программы python (визуализация программы на python)

Как добавить сетку и изменить стиль линий?

Сетка облегчает чтение значений. Её включают через plt.grid(True). Стиль линий задаётся в plt.plot() параметрами linestyle (например, '--', ':') и color.


plt.plot(x, y, linestyle='--', color='red', linewidth=2)
plt.grid(True, linestyle=':', alpha=0.7)
plt.show()

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

Как отобразить несколько графиков на одном рисунке (subplots)?

Для сравнения различных зависимостей удобно расположить графики в виде сетки. Функция plt.subplots(nrows, ncols) создаёт оси (axes) в виде массива.


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

# Первый график
axes[0,0].plot(x, y, color='green')
axes[0,0].set_title('Линейный')

# Второй график
axes[0,1].bar(categories, values, color='orange')
axes[0,1].set_title('Столбчатый')

# Третий график
axes[1,0].scatter(x, y, color='purple')
axes[1,0].set_title('Точечный')

# Четвёртый график
axes[1,1].hist([1,2,2,3,3,3,4,4,4,4], bins=4)
axes[1,1].set_title('Гистограмма')

plt.tight_layout()
plt.show()

Python визуализация (визуализация в python)

Как использовать Seaborn для создания стильных статистических графиков?

Seaborn работает поверх Matplotlib и предоставляет функции высокого уровня. Для начала выберите тему оформления через sns.set_theme().


sns.set_theme(style='darkgrid')
# Выборочные данные из встроенного датасета
tips = sns.load_dataset('tips')
sns.boxplot(x='day', y='total_bill', data=tips)
plt.title('Распределение счетов по дням недели')
plt.show()

Python создание графика (создание графика в python)

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

Круговые диаграммы показывают доли целого. Используйте plt.pie(). Не забудьте указать параметр autopct для отображения процентов.


sizes = [30, 25, 25, 20]
labels = ['Яблоки', 'Бананы', 'Апельсины', 'Груши']
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.axis('equal')  # для круговой формы
plt.title('Фруктовая корзина')
plt.show()

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

Типичные ошибки и способы их решения

Проблема: График не отображается в Jupyter Notebook.

Решение: Выполните ячейку с магической командой %matplotlib inline перед первым построением. Если используется Spyder или PyCharm, после plt.show() график открывается в отдельном окне – убедитесь, что бэкенд настроен.

Проблема: Русские буквы на осях отображаются кракозябрами.

Решение: Подключите шрифт, поддерживающий кириллицу:


plt.rcParams['font.family'] = 'DejaVu Sans'
# или 'Arial', 'Segoe UI'

Также можно установить библиотеку mplcairo или использовать plt.rcParams['axes.unicode_minus'] = False.

Проблема: Метки на осях перекрываются.

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

Проблема: Данные не отображаются, хотя код выполняется без ошибок.

Решение: Проверьте типы данных: x и y должны быть списками или массивами чисел. Если используются pandas, убедитесь, что столбцы не содержат пропусков – удалите их через dropna().

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

Расширенные примеры построения графиков с использованием Matplotlib и Seaborn

Ниже приведены подробные примеры с кодом и результатами, демонстрирующие продвинутые возможности настройки.

Пример 1: Настройка цветовой палитры и легенды

Используйте параметр cmap и color для управления цветами. Легенда добавляется через plt.legend().

Пример

import numpy as np
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, label='sin(x)', color='#FF5733', linewidth=2)
plt.plot(x, y2, label='cos(x)', color='#33FF57', linestyle='--')
plt.legend(loc='upper right', shadow=True, fontsize=12)
plt.grid(True, alpha=0.3)
plt.title('Синус и косинус')
plt.show()
Результат: график с двумя кривыми разного цвета и стиля, легенда в правом верхнем углу с тенью.

Пример 2: Гистограмма с наложением кривой плотности (Seaborn)

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

Пример

sns.set_theme(style='whitegrid')
data = np.random.normal(0, 1, 1000)
sns.histplot(data, kde=True, bins=30, color='steelblue', edgecolor='black')
plt.xlabel('Значение')
plt.ylabel('Частота')
plt.title('Гистограмма с KDE')
plt.show()
Результат: синяя гистограмма с 30 столбцами и плавной чёрной линией плотности распределения.

Пример 3: Тепловая карта (heatmap) для корреляционной матрицы

Тепловые карты отлично визуализируют матрицы корреляций. Используйте sns.heatmap() с аннотациями.

Пример

import pandas as pd
df = pd.DataFrame(np.random.rand(5,5), columns=['A','B','C','D','E'])
corr = df.corr()
plt.figure(figsize=(8,6))
sns.heatmap(corr, annot=True, cmap='coolwarm', vmin=-1, vmax=1, center=0)
plt.title('Корреляционная матрица')
plt.show()
Результат: квадратная тепловая карта с цветовыми ячейками, содержащими значения коэффициентов корреляции.

Пример 4: 3D-график поверхности с Matplotlib

Matplotlib поддерживает трёхмерные графики через модуль mpl_toolkits.mplot3d.

Пример

from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('3D поверхность sin(sqrt(x^2+y^2))')
plt.show()
Результат: трёхмерная поверхность с радужной цветовой схемой, оси подписаны.

Пример 5: Pairplot (матрица диаграмм рассеяния) в Seaborn

Для быстрого анализа многомерных данных используйте sns.pairplot(). Он строит все попарные зависимости.

Пример

iris = sns.load_dataset('iris')
sns.pairplot(iris, hue='species', palette='Set2')
plt.suptitle('Pairplot для датасета Iris', y=1.02)
plt.show()
Результат: матрица 4x4 графиков, где диагональ содержит гистограммы, а остальные – scatter plots, раскрашенные по видам ирисов.

Пример 6: Анимация графика (создание GIF)

Matplotlib поддерживает анимацию. Для создания GIF потребуется библиотека matplotlib.animation.

Пример

from matplotlib.animation import FuncAnimation
import matplotlib.animation as animation

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=range(100), interval=50, blit=True)
ani.save('sine_wave.gif', writer='pillow', fps=20)
plt.close()
print('Анимация сохранена как sine_wave.gif')
Результат: создаётся GIF-файл с движущейся синусоидой (частота увеличивается с каждым кадром).

Создание графика в Python - comments

En
Python создание графика (python)