Шпаргалка "Основы работы с графиками Matplotlib и Seaborn"
0) Установка и импорт
!pip install matplotlib seaborn import matplotlib.pyplot as plt import seaborn as sns
1) Базовые графики в Matplotlib
# Линейный график x = [1,2,3,4] y = [3,5,2,6] plt.figure(figsize=(6,4)) plt.plot(x, y, marker='o') plt.title("Линейный график") plt.xlabel("X") plt.ylabel("Y") plt.grid(True) plt.show() # Точки (scatter) plt.figure() plt.scatter(x, y) plt.title("Scatter") plt.show() # Гистограмма import numpy as np data = np.random.normal(0, 1, 1000) plt.figure() plt.hist(data, bins=30) plt.title("Гистограмма") plt.show() # Столбчатая диаграмма cats = ["A","B","C"] vals = [5, 2, 8] plt.figure() plt.bar(cats, vals) plt.title("Столбчатая") plt.show() # Несколько графиков (subplots) fig, axes = plt.subplots(1, 2, figsize=(10,4)) axes[0].plot(x, y); axes[0].set_title("Линия") axes[1].hist(data, bins=20); axes[1].set_title("Гист") plt.tight_layout() plt.show() # Сохранить картинку plt.figure() plt.plot([1,2,3],[1,4,9]) plt.savefig("plot.png", dpi=150, bbox_inches="tight")
Частые настройки
plt.title("Заголовок") plt.xlabel("Ось X") plt.ylabel("Ось Y") plt.legend() # если перед этим добавляли label=... plt.grid(True) plt.xlim(0,10); plt.ylim(-1,1)
2) Красиво и быстро с Seaborn (работает «поверх» Matplotlib)
import pandas as pd tips = sns.load_dataset("tips") # готовый датасет # Точечный график sns.scatterplot(data=tips, x="total_bill", y="tip", hue="sex") plt.title("total_bill vs tip") plt.show() # Линейный с доверительным интервалом sns.lineplot(data=tips, x="size", y="total_bill", estimator="mean") plt.title("Средний счёт по размеру компании") plt.show() # Гистограмма / плотность sns.histplot(data=tips, x="total_bill", bins=30, kde=True) plt.show() # Коробчатая диаграмма (boxplot) sns.boxplot(data=tips, x="day", y="total_bill") plt.show() # Violin plot sns.violinplot(data=tips, x="day", y="total_bill", hue="sex", split=True) plt.show() # Столбики (категории) sns.barplot(data=tips, x="day", y="tip", estimator=np.mean) plt.show() # Тёпловая карта (heatmap) корреляций corr = tips.corr(numeric_only=True) sns.heatmap(corr, annot=True, cmap="coolwarm") plt.title("Корреляции") plt.show() # Pairplot (все со всем, быстро посмотреть распределения) sns.pairplot(tips[["total_bill","tip","size"]]) plt.show() # catplot — универсальный для категорий (колонки/строки) sns.catplot(data=tips, x="day", y="total_bill", kind="box", col="sex") plt.show()
Стиль и тема в Seaborn
sns.set_theme(style="whitegrid") # стиль: darkgrid/whitegrid/dark/white/ticks plt.figure(figsize=(6,4)) sns.histplot(tips, x="total_bill") plt.show()