Практическое руководство: визуализация данных в Python

Раздел: Data Science -> matplotlib и seaborn

Основы визуализации с Matplotlib и Seaborn

Базовое решение: построение линейного графика через Pandas и Matplotlib.

Для первичного анализа данных часто требуется быстро построить график. Удобно использовать встроенный метод plot у DataFrame, который автоматически вызывает Matplotlib. При этом можно указать type графика.

import pandas as pd\nimport matplotlib.pyplot as plt\ndata = {'Год': [2020,2021,2022], 'Продажи': [100,150,200]}\ndf = pd.DataFrame(data)\ndf.plot(x='Год', y='Продажи', kind='line', marker='o')\nplt.title('Динамика продаж')\nplt.xlabel('Год')\nplt.ylabel('Продажи, тыс. руб.')\nplt.grid(True)\nplt.show()

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

В результате появляется окно с графиком. Если работать в Jupyter Notebook, график отобразится в ячейке. Этот подход подходит для быстрых визуализаций без глубокой кастомизации.

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

Для сравнения нескольких показателей или разных типов графиков используют plt.subplots. Пример с двумя графиками: линейный и столбчатый.

fig, axes = plt.subplots(1, 2, figsize=(12,4))\naxes[0].plot(df['Год'], df['Продажи'], 'b-o')\naxes[0].set_title('Линейный')\naxes[1].bar(df['Год'], df['Продажи'], color='g')\naxes[1].set_title('Столбчатый')\nplt.tight_layout()\nplt.show()

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

Важно помнить, что оси - это объекты, к которым применяются методы plot, bar и т.д. tight_layout() предотвращает наложение подписей.

Как использовать стили Seaborn для улучшения внешнего вида?

Seaborn предоставляет готовые стили и цветовые палитры. Достаточно вызвать sns.set_theme() или sns.set_style('whitegrid') перед построением.

import seaborn as sns\nsns.set_style('whitegrid')\ndf.plot(x='Год', y='Продажи', kind='bar')\nplt.title('Продажи по годам')\nplt.show()

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

Seaborn автоматически настраивает шрифты, сетку и цвета. Это простой способ сделать графики более презентабельными.

Как добавить легенду и настроить её положение?

После построения нескольких линий или столбцов, для идентификации вызывается plt.legend(). Положение регулируется параметром loc (например, 'upper left', 'best').

plt.plot([1,2,3], [1,4,9], label='квадраты')\nplt.plot([1,2,3], [1,2,3], label='линейная')\nplt.legend(loc='upper left')\nplt.show()

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

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

Размер задаётся через plt.figure(figsize=(ширина, высота)) или при создании subplots: plt.subplots(figsize=(10,5)).

plt.figure(figsize=(8,4))\nplt.plot(df['Год'], df['Продажи'])\nplt.show()

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

Как добавить аннотацию (текст) на график в определённую точку?

Используется plt.annotate или ax.text. Пример с указанием стрелки.

plt.plot([1,2,3], [1,4,9])\nplt.annotate('максимум', xy=(3,9), xytext=(2,7), arrowprops=dict(arrowstyle='->'))\nplt.show()

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

Типичная ошибка: не отображается кириллица на подписях.

Matplotlib по умолчанию использует шрифт, не поддерживающий русские буквы. Решение - задать шрифт, содержащий кириллицу, например DejaVu Sans или Arial.

plt.rcParams['font.family'] = 'DejaVu Sans'

Если этот шрифт не подходит, можно указать другой через font_manager или временно для конкретного элемента через fontdict.

Проблема: перекрытие меток на оси X при большом количестве значений.

Используется plt.xticks(rotation=45) для поворота или fig.autofmt_xdate() при работе с датами.

Проблема: низкое качество сохранённого изображения.

При сохранении через plt.savefig задаётся параметр dpi. Для высокого качества указывается dpi=300 или больше.

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

Расширенные приёмы визуализации

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

Пример
import numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n\nnp.random.seed(42)\ndata = np.random.randn(100, 5)\ncolumns = ['A', 'B', 'C', 'D', 'E']\ndf = pd.DataFrame(data, columns=columns)\n\ncorr = df.corr()\n\nplt.figure(figsize=(8,6))\nsns.heatmap(corr, annot=True, cmap='coolwarm', linewidths=0.5)\nplt.title('Тепловая карта корреляции')\nplt.show()
На экране отобразится квадратная матрица с цветовыми ячейками и значениями коэффициентов корреляции. Цвета от синего (отрицательная связь) до красного (положительная).

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

Пример
sns.pairplot(df, diag_kind='kde', markers='o')\nplt.show()
Строится матрица, где на диагонали - гистограммы или KDE, а остальные - точечные графики каждого сочетания переменных.

Для более тонкой настройки цвета используется палитры Seaborn или Matplotlib. Пример с дискретной цветовой картой:

Пример
palette = sns.color_palette('husl', 8)\nsns.set_palette(palette)\nx = np.linspace(0, 2*np.pi, 50)\nfor i in range(1,5):\n    plt.plot(x, np.sin(x+i*np.pi/4), label=f'sin(x+{i}π/4)')\nplt.legend()\nplt.show()
На графике будет 4 синусоиды разных цветов из палитры husl.

Также можно сохранять графики в высоком разрешении с настройкой DPI и формата:

Пример
plt.figure(figsize=(10,6), dpi=150)\nplt.plot(x, np.sin(x))\nplt.savefig('sinusoid.png', dpi=300, bbox_inches='tight', transparent=True)

В результате создаётся PNG-файл с высоким качеством и прозрачным фоном.

Для анимации используется Matplotlib.animation, но это требует дополнительного кода. Простейший пример:

Пример
from matplotlib.animation import FuncAnimation\n\nfig, ax = plt.subplots()\nx, y = [], []\nline, = ax.plot([], [], 'b-')\n\ndef init():\n    ax.set_xlim(0, 2*np.pi)\n    ax.set_ylim(-1.5, 1.5)\n    return line,\n\ndef update(frame):\n    x.append(frame)\n    y.append(np.sin(frame))\n    line.set_data(x, y)\n    return line,\n\nani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 100), init_func=init, blit=True)\nplt.show()
Запустится анимация, рисующая синусоиду по мере движения точки.

Визуализация в Python - comments

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