Домашнє завдання

Графіки matplotlib

Предметна область тут інша, ніж у лекції, — навмисно: якщо ти зможеш повторити ту саму механіку на своїх даних, значить, справа не в завченому прикладі. Працюємо з показаннями фітнес-браслета: скільки кроків людина зробила за кожен із девʼяноста днів. Усе роби в окремому файлі kroky.py або в новому зошиті — практику не редагуй, вона знадобиться для звірки.

Дані генеруй саме цією формулою, без випадковості, щоб числа збіглися з критеріями нижче:

import numpy as np

дні = np.arange(90)
шум = (дні * 1103515245 + 12345) % 2 ** 31 % 1201 - 600     # від -600 до +600 кроків
вихідний = np.isin(дні % 7, [5, 6])                          # субота й неділя
кроки = 6000 + 40 * дні + вихідний * 2500 + шум

рівень 1Рівень 1 — База

Побудуй один графік, у якого є все, чого лекція вимагала від читабельної картинки.

  1. Лінія кроки в часі плюс друга лінія — кроки_торік = кроки - 1500.
  2. Заголовок, підпис осі x, підпис осі y з одиницями, легенда з двома записами, напівпрозора сітка.
  3. Горизонтальна лінія на рівні 10 000 кроків (ax.axhline) з власним підписом у легенді.
  4. Збережи результат у файл kroky.png з dpi=200 і bbox_inches="tight" — і зроби це до plt.show().
  5. Надрукуй, скільки днів із девʼяноста перевищили 10 000 кроків.

Зроблено, якщо:


рівень 2Рівень 2 — Плюс

Одні дані, три різні питання — і три різні типи графіка в одній сітці.

  1. Сітка plt.subplots(2, 2, constrained_layout=True).
  2. Ліворуч угорі — лінія по днях: чи є зростання за три місяці.
  3. Праворуч угорі — гістограма всіх девʼяноста значень: як вони розподілені.
  4. Ліворуч унизу — стовпчики: середня кількість кроків по днях тижня (дні % 7, сім стовпчиків).
  5. Праворуч унизу — точки: кроки проти номера тижня (дні // 7), щоб побачити розкид усередині кожного тижня.
  6. Кожна область має власний заголовок і підписи обох осей.
  7. Під сіткою надрукуй три речення: що видно на кожному типі й чого на ньому не видно.

Зроблено, якщо:


рівень 3Рівень 3 — Виклик

Зроби власний «квартет»: чотири набори з однаковими числами й різними формами.

  1. Придумай і згенеруй чотири набори по 40 точок, у яких збігаються до другого знака: середнє x, середнє y, стандартне відхилення y і коефіцієнт кореляції. Форми мають бути різні: пряма з шумом, дуга, дві окремі хмари, пряма з одним викидом. Підганяти можна масштабом і зсувом: якщо взяти будь-яку форму й перерахувати її як y_нове = (y - y.mean()) / y.std() * потрібне_відхилення + потрібне_середнє, середнє й відхилення стануть точно такими, як треба, а форма не зміниться.
  2. Надрукуй таблицю показників усіх чотирьох наборів і доведи assert-ом, що вони однакові до другого знака.
  3. Намалюй усі чотири в сітці 1×4 зі спільними межами осей і однією й тією самою прямою регресії.
  4. Окремо зроби пару «оманливо / чесно» на своїх даних кроків: візьми середнє за перший і за останній місяць, покажи їх стовпчиками двічі — з віссю від нуля й з обрізаною віссю — і порахуй числом, у скільки разів перебільшене враження.
  5. Опиши одним абзацом третій спосіб збрехати графіком, якого не було в лекції, і покажи його кодом.

Зроблено, якщо:


Підказки