Учебник по Seaborn

Seaborn — это библиотека визуализации данных Python, построенная поверх Matplotlib и ориентированная на создание различных статистических графиков для более удобного представления и понимания данных.

Цель Seaborn — упростить процесс визуализации статистических данных, предоставляя высокоуровневые интерфейсы и красивые темы по умолчанию, что позволяет пользователям создавать сложные графики с минимальным кодом.

Seaborn предоставляет простые высокоуровневые интерфейсы, с помощью которых можно легко создавать различные статистические графики, включая диаграммы рассеяния, линейные графики, столбчатые диаграммы, тепловые карты и т. д., с хорошими эстетическими эффектами.

Seaborn уделяет большое внимание эстетике в своем дизайне: тщательно подобранные темы по умолчанию и цветовые палитры делают графики более привлекательными.

Установка Seaborn:

pip install seaborn

Seaborn предоставляет множество встроенных тем и цветовых палитр, которые можно задать, чтобы изменить внешний вид графиков.

Пример

import seaborn as sns

# Установите тему и цветовую палитру
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 seaborn as sns
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 seaborn as sns
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 seaborn as sns
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 seaborn as sns
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 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.boxplot(x='Category', y='Value', data=df)
plt.show()

Результат показан на рисунке ниже:

5. Тепловая карта - sns.heatmap()

Используется для создания тепловых карт для матричных данных, часто используется для отображения корреляционных матриц.

Пример

import seaborn as sns
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

Другие расширения