Визуализация данных в Jupyter Notebook: работа с графиками

Введение
Jupyter Notebook — основной инструмент для многих дата-сайентистов и аналитиков. Он предоставляет веб-интерфейс для интерактивного кода, визуализации и совместной работы. Визуализации помогают быстро понять контекст данных — выявить аномалии, тренды и зависимости.
Определение: matplotlib — это библиотека для создания 2D-графиков в Python; pandas предоставляет удобные структуры данных и методы для работы с таблицами.
Пререквизиты
Убедитесь, что на компьютере установлены Python, Jupyter, pandas и matplotlib. Установить можно через pip:
$ pip install jupyter$ pip install pandas$ pip install matplotlibПосле установки запустите сервер Jupyter:
$ jupyter notebookОткроется страница Jupyter в браузере с текущей директорией. ВАЖНО: не закрывайте терминал, в котором запущен сервер — при закрытии сервер остановится.
Простая линия (Simple Plot)
В новой ячейке Jupyter выполните пример простого линейного графика:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7, 8]
y = [2, 4, 6, 8, 10, 12, 14, 16]
plt.plot(x, y)
plt.show()Это создаёт линейный график. plt.plot() рисует линию, plt.show() отображает её. Чтобы получить кривую, измените значения y:
import matplotlib.pyplot as plt
x = [3,4,5,6,7,8,9,10,11,12]
y = [9,16,25,36,49,64,81,100,121,144]
plt.plot(x, y)
plt.show()Обратите внимание: matplotlib автоматически рассчитывает шкалу осей. Важно также, чтобы длины списков x и y совпадали — иначе возникнет ошибка при выполнении.
Доступные типы диаграмм
Не все типы диаграмм рисуются по умолчанию: для гистограмм, столбчатых диаграмм и других нужно вызвать соответствующий метод.
Столбчатая диаграмма
Для столбчатого графика используйте plt.bar():
import matplotlib.pyplot as plt
x = [3,4,5,6,7,8,9,10,11,12]
y = [9,16,25,36,49,64,81,100,121,144]
plt.bar(x, y)
plt.show()Точечный график (Scatter)
Замените метод на plt.scatter():
import matplotlib.pyplot as plt
x = [3,4,5,6,7,8,9,10,11,12]
y = [9,16,25,36,49,64,81,100,121,144]
plt.scatter(x, y)
plt.show()Круговая диаграмма (Pie)
Круговые диаграммы отличаются настройками. Пример с фигурой и размером:
import matplotlib.pyplot as plt
x = [4,9,16,25,36]
fig = plt.figure(figsize=(9, 5))
plt.pie(x)
plt.show()Полезные параметры pie():
- labels — подписи слайсов
- colors — цвета слайсов (текстом или hex)
Пример с подписями и цветами:
import matplotlib.pyplot as plt
x = [4,9,16,25,36]
fig = plt.figure(figsize=(5.5, 5.5))
plt.pie(
x,
labels=("Guavas", "Berries", "Mangoes", "Apples", "Avocado"),
colors=("#a86544", "#eb5b13", "#ebc713", "#bdeb13", "#8aeb13")
)
plt.show()Кроме перечисленных, есть hist (гистограмма), area (площадь), kde (оценка плотности). Подробности — в документации pandas и matplotlib.
Форматирование графиков
Чтобы добавить заголовок и подписи осей:
import matplotlib.pyplot as plt
plt.plot([1,2,3], [4,5,6])
plt.title("Заголовок графика")
plt.xlabel("Ось X")
plt.ylabel("Ось Y")
plt.show()Добавление легенды:
plt.plot(x, y, label="Линия 1")
plt.legend()Настройка сетки и размера:
plt.figure(figsize=(10, 4))
plt.grid(True)Советы по доступности: используйте контрастные цвета и подписи, добавляйте значения в слайсы или подписи точек, если нужно — увеличьте шрифт plt.rcParams.update({“font.size”: 12}).
Работа с данными (pandas CSV)
Обычно данные загружают из CSV и визуализируют через pandas:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
# Быстрый график из столбца
df['sales'].plot(kind='line')
plt.show()Pandas упрощает построение через метод .plot(), который использует matplotlib под капотом.
Отладка и типичные ошибки
- Ошибка ValueError: x and y must have same first dimension — длины массивов отличаются.
- Пустой график — убедитесь, что plt.show() был вызван и данные не содержат NaN во всех точках.
- Неправильные типы — передавайте числовые типы; для дат используйте pd.to_datetime().
Important: при работе в Jupyter, если графики не отображаются, проверьте, включен ли магический режим вывода графиков (в новых версиях Jupyter это обычно не требуется):
%matplotlib inlineКогда этот подход не подходит
- Нужна интерактивность (zoom, hover): используйте plotly или bokeh.
- Большие данные (миллионы точек): предварительно агрегируйте или используйте специализированные инструменты (Datashader).
- Шаблоны визуализации для отчётности и дашбордов: рассмотрите Altair или Dash.
Альтернативы и сравнение (кратко)
- seaborn — строится поверх matplotlib, даёт красивые статистические визуализации и темы по умолчанию.
- plotly — интерактивные, масштабируемые графики в браузере.
- bokeh — интерактивные визуализации для веба.
Мини-таблица совместимости:
- Простая исследовательская визуализация: matplotlib / pandas
- Статистические графики: seaborn
- Интерктивные дашборды: plotly / bokeh
- Большие наборы данных: Datashader
Практическая методология (быстрый чек-лист)
- Подготовьте данные: очистка, преобразование типов, агрегация.
- Выберите тип графика по задаче (тренд, распределение, сравнение, доли).
- Настройте подписи, легенду, шкалы и цветовую палитру.
- Проверка: проверьте размеры данных и отсутствие NaN.
- Документируйте выводы и сохраните изображение plt.savefig(‘plot.png’).
Чек-лист роли:
- Аналитик: проверить корректность агрегирования и метрик.
- Дизайнер данных: выбрать цветовую палитру и подписи.
- Инженер: автоматизировать генерацию графиков и сохранение файлов.
Критерии приёмки
- График корректно отображает ожидаемую зависимость.
- Подписи осей и заголовок понятны и соответствуют данным.
- Для публикации — добавлена легенда и указаны единицы измерения.
Короткое руководство по сохранению
plt.savefig('figure.png', dpi=300, bbox_inches='tight')1‑линейный глоссарий
- matplotlib — библиотека для рисования 2D-графиков в Python.
- pandas — библиотека для обработки табличных данных.
- plt.figure(figsize=…) — задаёт размер фигуры в дюймах.
Часто задаваемые вопросы
Как отобразить графики inline в Jupyter?
Вставьте в ячейку %matplotlib inline или используйте интерфейс JupyterLab — современные версии обычно показывают графики по умолчанию.
Что делать, если график пустой?
Проверьте данные на NaN и длину массивов x и y, вызовите plt.show(), убедитесь, что не закрыт kernel.
Можно ли использовать другие цветовые схемы?
Да, используйте встроенные палитры matplotlib, seaborn или задавайте hex-коды.
Краткое резюме:
- Jupyter + matplotlib + pandas — быстрый старт для визуализации.
- Выбирайте тип графика по цели: тренды, распределения, сравнения, доли.
- При потребности в интерактивности или масштабируемости — переходите на plotly, bokeh или Datashader.
Если нужно, могу добавить готовый шаблон ноутбука с примерами и ноутбуком в формате .ipynb.