Гистограмма и точечный график
Когда данных много, полезно посмотреть на их распределение: какие значения встречаются часто, какие редко. А когда у каждого объекта два числа — например, рост и вес, — интересна связь между ними. Для этого есть гистограммы и точечные графики.
Гистограмма
Гистограмма делит диапазон значений на интервалы и показывает, сколько значений попало в каждый:
import matplotlib.pyplot as plt
ages = [12, 15, 14, 13, 18, 22, 25, 14, 16, 13, 30, 15]
plt.hist(ages, bins=4)
plt.xlabel("Возраст")
plt.ylabel("Человек")
Параметр bins:
- число — диапазон от минимума до максимума данных делится на столько равных интервалов;
- список границ — интервалы задаются явно:
bins=[10, 15, 20, 25, 30].
Каждый интервал включает левую границу и не включает правую: значение 15 при границах [10, 15, 20] попадёт во второй интервал. Исключение — последний интервал: его правая граница включена.
plt.hist возвращает три объекта: количества в интервалах, границы и сами столбцы:
counts, edges, bars = plt.hist(ages, bins=[10, 20, 30])
print(counts) # [9. 3.]
print(edges) # [10. 20. 30.]
Оформление: color, edgecolor="black" (видны границы столбцов), alpha=0.5 (полупрозрачность — удобно наложить две гистограммы).
Сколько интервалов выбрать
Слишком мало интервалов — теряются детали, слишком много — график «шумит». Для нескольких сотен значений обычно хватает 10–30. Если у значений естественные границы (баллы по десяткам, возраст по годам), лучше задать границы списком.
Точечный график
plt.scatter(x, y) ставит точку для каждой пары значений — без линий:
hours = [1, 2, 2, 3, 4, 5, 6]
score = [52, 55, 61, 64, 70, 78, 85]
plt.scatter(hours, score)
plt.xlabel("Часов подготовки")
plt.ylabel("Балл")
Такой график показывает связь: если точки выстраиваются вдоль наклонной линии, величины связаны.
Цвет и размер каждой точки
Главное преимущество scatter — можно задать свой цвет и размер для каждой точки:
colors = ["green" if s >= 60 else "gray" for s in score]
sizes = [h * 20 for h in hours]
plt.scatter(hours, score, c=colors, s=sizes)
c— цвет: один для всех или список по точке;s— площадь маркера: число или список;alpha— прозрачность,marker— форма точки.
Если c — список чисел, а не названий цветов, точки раскрашиваются по шкале, а plt.colorbar() покажет эту шкалу.
Итог
plt.hist(данные, bins=...)— гистограмма; числоbins— равные интервалы от min до max, список — свои границы;- интервалы
[левая, правая), у последнего правая граница включена; plt.scatter(x, y)— точки без линий для поиска связи между величинами;cиs— цвет и размер каждой точки.