Візуалізація даних за допомогою matplotlib
Візуалізація даних за допомогою matplotlib
🎯 Мета модуля
- Опанувати базову архітектуру matplotlib (Figure, Axes)
- Навчитися будувати 6 типів графіків для різних завдань аналізу
- Освоїти візуалізацію розподілів та залежностей між змінними
- Навчитися створювати багатопанельні композиції (subplots)
- Опанувати кастомізацію: кольори, стилі, легенди, анотації
📚 Структура модуля
- Основи matplotlib — Figure, Axes, перший графік
- Розподіли — Гістограми та box plots
- Залежності — Scatter plots та кореляція
- Категорії — Bar charts та pie charts
- Композиції — Subplots та стилізація
Чому візуалізація — це не прикраса, а інструмент мислення
Уявіть: перед вами таблиця з 1000 рядків чисел — результати вимірювань температури протягом місяця. Ви дивитесь на ці числа і... нічого не розумієте. Є піки? Є тренди? Чи стабільна температура?
А тепер подивіться на той самий датасет графічно:
import numpy as np
import matplotlib.pyplot as plt
# Генеруємо 1000 вимірювань температури (30 днів по 24 години + шум)
rng = np.random.default_rng(seed=42)
hours = np.arange(1000)
temperature = 20 + 5 * np.sin(hours * 2 * np.pi / 24) + rng.normal(0, 1, 1000)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))
# Ліворуч: перші 100 чисел у вигляді тексту (нечитабельно)
ax1.text(0.1, 0.5, f"Дані: {temperature[:100].round(1).tolist()[:20]}...",
fontsize=8, wrap=True)
ax1.set_title("Таблиця з числами (перші 100 значень)")
ax1.axis("off")
# Праворуч: той самий датасет графічно (одразу видно паттерн!)
ax2.plot(hours[:240], temperature[:240], linewidth=0.8, alpha=0.7)
ax2.set_title("Графік (перші 10 днів)")
ax2.set_xlabel("Години")
ax2.set_ylabel("Температура (°C)")
ax2.grid(alpha=0.3)
plt.tight_layout()
plt.show()

Висновок одразу видно на графіку: температура коливається з періодом 24 години (добовий цикл), середнє значення ~20°C, амплітуда ~5°C.
Аналогія: дані без візуалізації — це як карта міста, описана словами («йдіть 300 метрів на північ, потім 150 метрів на схід...»). Графік — це сама карта. Одразу видно весь маршрут, перехрестя, тупики.
Структура модуля
Цей модуль складається з п'яти підтем, кожна з яких розкриває окремий аспект візуалізації:
Підтема 1: Основи matplotlib
Архітектура бібліотеки, об'єкти Figure та Axes, побудова першого лінійного графіка, базова кастомізація (заголовки, підписи осей, сітка).
Ключові питання: Чому plt.plot() та ax.plot() — це не одне й те саме? Як matplotlib влаштований «під капотом»?
Підтема 2: Візуалізація розподілів
Гістограми для неперервних змінних, box plots для виявлення викидів та порівняння груп. Зв'язок зі статистикою: медіана, квартилі, нормальний розподіл.
Ключові питання: Скільки bins потрібно для гістограми? Як побачити викиди на box plot?
Підтема 3: Візуалізація залежностей
Scatter plots для виявлення кореляцій між двома змінними. Зв'язок зі статистикою: коефіцієнт кореляції Пірсона, лінія тренду.
Ключові питання: Як побачити кореляцію графічно? Чи означає кореляція причинно-наслідковий зв'язок?
Підтема 4: Візуалізація категоріальних даних
Bar charts для порівняння категорій, pie charts для часток цілого. Коли використовувати кожен тип графіка.
Ключові питання: Чому bar chart кращий за pie chart у більшості випадків? Коли pie chart виправданий?
Підтема 5: Композиції та стилізація
Побудова кількох графіків на одній фігурі (subplots), кастомізація кольорів, шрифтів, легенд, анотацій. Створення «дашбордів» для аналізу.
Ключові питання: Як розмістити 6 графіків на одній сторінці? Як вибрати кольорову схему для accessibility?
Навігація по модулю
Після завершення модуля ви зможете
✅ Швидкий аналіз
✅ Комунікація інсайтів
✅ Дебаг моделей ML
- Тримайте документацію matplotlib відкритою: matplotlib.org
- Експериментуйте з параметрами — змініть колір, розмір, стиль і подивіться, що вийде
- Кожен графік у підтемах можна скопіювати та адаптувати під свої дані
- Не намагайтеся запам'ятати всі параметри — запам'ятайте концепції (Figure, Axes, типи графіків)