Учебник по Seaborn
Seaborn — это библиотека визуализации данных Python, построенная поверх Matplotlib и ориентированная на создание различных статистических графиков для более удобного представления и понимания данных.
Цель Seaborn — упростить процесс визуализации статистических данных, предоставляя высокоуровневые интерфейсы и красивые темы по умолчанию, что позволяет пользователям создавать сложные графики с минимальным кодом.
Seaborn предоставляет простые высокоуровневые интерфейсы, с помощью которых можно легко создавать различные статистические графики, включая диаграммы рассеяния, линейные графики, столбчатые диаграммы, тепловые карты и т. д., с хорошими эстетическими эффектами.
Seaborn уделяет большое внимание эстетике в своем дизайне: тщательно подобранные темы по умолчанию и цветовые палитры делают графики более привлекательными.
Установка Seaborn:
pip install seaborn
Seaborn предоставляет множество встроенных тем и цветовых палитр, которые можно задать, чтобы изменить внешний вид графиков.
Пример
# Установите тему и цветовую палитру
sns.set_theme(style="whitegrid", palette="pastel")
С помощью функции sns.set_theme() можно выбирать различные темы и контексты. Ниже приведены некоторые встроенные темы и контексты в Seaborn:
Тема
darkgrid(по умолчанию): Тёмная тема с сеткой.
import seaborn as sns # 设置为 darkgrid 主题 sns.set_theme(style="darkgrid")
whitegrid: Светлая тема с сеткой.
import seaborn as sns # 设置为 whitegrid 主题 sns.set_theme(style="whitegrid")
dark: Тёмная тема, без сетки.
import seaborn as sns # 设置为 dark 主题 sns.set_theme(style="dark")
white: Светлая тема, без сетки.
import seaborn as sns # 设置为 white 主题 sns.set_theme(style="white")
ticks: Тёмная тема с отметками на осях.
import seaborn as sns # 设置为 ticks 主题 sns.set_theme(style="ticks")
Контекст
paper: Подходит для небольших графиков, с меньшими подписями и линиями.
import seaborn as sns # 设置为 paper 模板 sns.set_theme(context="paper")
notebook(по умолчанию): Подходит для ноутбуков и подобных сред, со средними подписями и линиями.
import seaborn as sns # 设置为 notebook 模板 sns.set_theme(context="notebook")
talk: Подходит для слайдов презентаций, с крупными подписями и линиями.
import seaborn as sns # 设置为 talk 模板 sns.set_theme(context="talk")
poster: Подходит для постеров, с очень крупными подписями и линиями.
import seaborn as sns # 设置为 poster 模板 sns.set_theme(context="poster")
Устанавливая различные темы и контексты, можно настраивать такие атрибуты, как размер, толщина линий и цвета графиков Seaborn, чтобы они соответствовали различным сценариям построения графиков. Эти встроенные темы и контексты позволяют пользователям легче создавать привлекательную и согласованную графику.
В следующем примере используются Seaborn и Matplotlib для создания простой столбчатой диаграммы, показывающей продажи разных продуктов:
Пример
import matplotlib.pyplot as plt
# Установите тему и цветовую палитру
sns.set_theme(style="darkgrid", palette="pastel")
# Пример данных
products = ["Товар A", "Товар B", "Товар C", "Товар D"]
sales = [120, 210, 150, 180]
# Создать столбчатую диаграмму
sns.barplot(x=products, y=sales)
# Добавить подписи и заголовок
plt.xlabel("Товары")
plt.ylabel("Продажи")
plt.title("Продажи товаров по категориям")
# Отобразить график
plt.show()
Результат показан на рисунке ниже:

Функции построения графиков
Seaborn предоставляет несколько функций построения графиков для создания различных статистических диаграмм. Ниже приведены основные функции построения графиков в Seaborn и соответствующие примеры:
1. Диаграмма рассеяния - sns.scatterplot()
Используется для создания диаграммы рассеяния между двумя переменными с возможностью добавления линии тренда.
Пример
import matplotlib.pyplot as plt
import pandas as pd
# Создать пример DataFrame
data = {'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}
df = pd.DataFrame(data)
# Нарисовать диаграмму рассеяния
sns.scatterplot(x='A', y='B', data=df)
plt.show()
Результат показан на рисунке ниже:

2. Линейный график - sns.lineplot()
Используется для построения линий тренда, показывающих, как одна переменная изменяется вместе с другой переменной.
Пример
import matplotlib.pyplot as plt
import pandas as pd
# Создать пример DataFrame
data = {'X': [1, 2, 3, 4, 5], 'Y': [5, 4, 3, 2, 1]}
df = pd.DataFrame(data)
# Нарисовать линейный график
sns.lineplot(x='X', y='Y', data=df)
plt.show()
Результат показан на рисунке ниже:

3. Столбчатая диаграмма - sns.barplot()
Используется для создания столбчатых диаграмм, отображающих среднее значение или другие агрегирующие функции переменных.
Пример
import matplotlib.pyplot as plt
import pandas as pd
# Создать пример DataFrame
data = {'Category': ['A', 'B', 'C'], 'Value': [3, 7, 5]}
df = pd.DataFrame(data)
# Построить столбчатую диаграмму
sns.barplot(x='Category', y='Value', data=df)
plt.show()
Результат показан на рисунке ниже:

4. Ящичная диаграмма - sns.boxplot()
Используется для визуализации распределения переменных, включая медиану, квартили и т. д.
Пример
import matplotlib.pyplot as plt
import pandas as pd
# Создать пример DataFrame
data = {'Category': ['A', 'A', 'B', 'B', 'C', 'C'], 'Value': [3, 7, 5, 9, 2, 6]}
df = pd.DataFrame(data)
# Построить ящичную диаграмму
sns.boxplot(x='Category', y='Value', data=df)
plt.show()
Результат показан на рисунке ниже:

5. Тепловая карта - sns.heatmap()
Используется для создания тепловых карт для матричных данных, часто используется для отображения корреляционных матриц.
Пример
import matplotlib.pyplot as plt
import pandas as pd
# Создать пример DataFrame
data = {'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}
df = pd.DataFrame(data)
# Создать корреляционную матрицу
correlation_matrix = df.corr()
# Визуализировать матрицу корреляции с помощью тепловой карты
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.show()
Результат показан на рисунке ниже:

6. Скрипичная диаграмма - sns.violinplot()
Используется для отображения формы и оценки плотности распределений, объединяя ящичные диаграммы и ядерную оценку плотности.
Пример
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# Создать пример DataFrame
data = {'Category': ['A', 'A', 'B', 'B', 'C', 'C'], 'Value': [3, 7, 5, 9, 2, 6]}
df = pd.DataFrame(data)
# Построить скрипичную диаграмму
sns.violinplot(x='Category', y='Value', data=df)
plt.show()
Результат показан на рисунке ниже:

Другие расширенияДля получения дополнительной информации обратитесь к официальному руководству:https://seaborn.pydata.org/tutorial.html