Bemind
Учебник Python
Учебник Python
  • Python
    • Python Lists
      • Списковые включения в Python (Полное руководство с примерами)
      • Исправление ValueError: Слишком Много Значений Для Распаковки в Python
      • Как добавить словарь в список в Python
      • Как добавить строку в список в Python
      • Разница между массивами и списками в Python
      • Python: Различия между списками и кортежами
      • Как проверить, пуст ли список в Python
      • Как Итерировать (Циклически Проходить) По Списку в Python
      • Python List sort(): Подробное руководство по сортировке списков
      • Python List Extend: Как добавить несколько элементов в список
      • Python: Найти Индекс Всех Вхождений Элемента в Списке
      • Конвертация списка словарей в Pandas DataFrame
      • Генерация случайных чисел в Python
      • Поиск Индекса в Списке Python: Найти Первое, Последнее или Все Вхождения
      • Добавить в начало списка в Python (Вставить в начало)
      • Найти дубликаты в списке Python
      • Python: Умножение Списков (6 Различных Способов)
      • Python списки: Полный обзор
      • Python: Выбор случайного элемента из списка
      • 4 Способа Очистить Список в Python
      • Объяснение ошибки IndexError в Python: индекс списка выходит за пределы допустимого диапазона
      • Python: Получение индекса максимального элемента в списке
      • Python: Объединение списков – Слияние списков (8 способов)
      • Python: Проверка наличия элемента в списке
      • Python: Проверка наличия элемента в списке
      • Удаление элемента из списка в Python (pop, remove, del, clear)
      • Как перевернуть список в Python (6 способов)
      • Python: Замена элемента в списке (6 различных способов)
      • Python: Удаление дубликатов из списка (7 способов)
      • Python: Преобразование словаря в список кортежей (4 простых способа)
      • Python: Перемешать Список (Случайное Распределение Элементов Списка в Python)
      • Python: Пересечение двух списков
      • Python: Вычитание двух списков (4 простых способа!)
      • Длина или Размер Списка в Python: 5 Способов Узнать Длину Списка
      • Python: Транспонирование списка списков (5 простых способов!)
      • Python: Разделение списка (Пополам, на части)
      • Python: Комбинации списка (Получить все комбинации списка)
      • Python: Выравнивание списка списков (4 способа)
      • Разница между списками в Python: Нахождение разницы между двумя списками Python
      • Python: Найти среднее значение списка или списка списков
      • Как добавлять элементы в списки в Python – 4 простых способа!
      • Списковые включения в Python (Полное руководство с примерами)
      • 6 способов преобразовать список Python в строку
    • Python Dictionaries
      • Понимание словаря Python (с примерами)
      • Исправляем ValueError: Слишком Много Значений Для Распаковки в Python
      • Как добавить словарь в список в Python
      • Преобразование JSON в словарь Python
      • Полное руководство по вложенным словарям в Python
      • Копирование словаря в Python: Полное руководство
      • Конвертация списка словарей в Pandas DataFrame
      • Поиск дубликатов в списке Python
      • Полный обзор словарей в Python
      • Python: Добавление пары Ключ:Значение в Словарь
      • Python: Сортировка словаря по значениям
      • Слияние Словарей в Python – Комбинирование Словарей (7 Способов)
      • Python: Удаление Дубликатов из Списка (7 Способов)
      • Python: Преобразование словаря в список кортежей (4 простых способа)
      • Python: Красивая Печать Словаря (Dictionary) – 4 Способа
      • Python: Проверка пуст ли словарь (5 способов!)
      • Copy of Python: Проверка пуст ли словарь (5 способов!)
      • Python: Проверьте, существует ли ключ (или значение) в словаре (5 простых способов)
      • Python: Проверьте, существует ли ключ (или значение) в словаре (5 простых способов)
      • Python: Получение Ключа Словаря с Максимальным Значением (4 Способа)
      • Python: Удаление ключа из словаря (4 разных способа)
      • Как красиво вывести JSON-файл в Python (6 методов)
    • Python Strings
      • Python Капитализация Строк: Руководство по Преобразованию слов в Заглавные
      • Python strip: Как обрезать строку в Python
      • Python Обратная Строка: Руководство по Реверсированию Строк
      • Как Удалить Префикс или Суффикс из Строки в Python
      • Преобразование строки в формат заголовка в Python с помощью str.title()
      • Как добавить строку в список в Python
      • Python String startswith: Проверка, начинается ли строка с подстроки
      • Python String endswith: Проверка того, заканчивается ли строка подстрокой
      • Как удалить первый или последний символ из строки в Python
      • Как исправить: SyntaxError в Python - EOL при сканировании строкового литерала
      • Python String Contains: Проверка Наличия Подстроки в Строке
      • Как проверить, пустая ли строка в Python
      • Python Новая Строка и Как Печатать Без Переноса Строки
      • Как Конкатенировать Строки в Python: Полное Руководство
      • Python: Подсчет слов в строке или файле
      • Как создать список алфавита в Python
      • Python: Конкатенация строки и целого числа (Int)
      • Python: Сортировка строки (4 различных способа)
      • Python zfill и rjust: Добавление нулей в строку в Python
      • Python: Целое в Двоичное (Преобразование целого числа в двоичную строку)
      • Python rfind: Нахождение индекса последней подстроки в строке
      • Python SHA256 хеширование алгоритм: объяснение
      • Python: Усечение числа с плавающей точкой (6 различных способов)
      • Выбор между методами Python isdigit(), isnumeric() и isdecimal()
      • Python: Удаление специальных символов из строки
      • Python Приведение Строки к Нижнему Регистру с помощью .lower(), .casefold(), и .islower()
      • Python программа для проверки, является ли строка палиндромом (6 методов)
      • Python: Найдите все перестановки строки (3 легких способа!)
      • Python: Удаление пунктуации из строки (3 разных способа!)
      • Python: Найти индекс (или все индексы) подстроки в строке
      • Python: Удаление символов новой строки из строки
      • Python: Удаление символа из строки (4 способа)
      • Python: Количество вхождений в строке (4 способа!)
    • Встроенные функции Python
      • abs()
      • ascii()
      • aiter()
      • all()
      • any()
      • anext()
      • bin()
      • bool()
      • breakpoint()
      • bytearray()
      • bytes()
      • callable()
      • chr()
      • classmethod()
      • compile()
      • complex()
      • delattr()
      • dict()
      • dir()
      • divmod()
      • enumerate()
      • eval()
      • exec()
      • filter()
      • float()
      • format()
      • frozenset()
      • getattr()
      • globals()
      • hasattr()
      • hash()
      • help()
      • hex()
      • id()
      • input()
      • int()
      • issubclass()
      • iter()
      • len()
      • list()
      • locals()
      • map()
      • max()
      • memoryview()
      • min()
      • next()
      • object()
      • oct()
      • open()
      • ord()
      • pow()
      • print()
      • property()
      • range()
      • repr()
      • reversed()
      • round()
      • set()
      • setattr()
      • isinstance()
      • slice()
      • zip()
      • type()
      • sorted()
      • staticmethod()
      • str()
      • sum()
      • super()
      • tuple()
      • vars()
      • import()
    • Cобеседования Python. Разбор реальных вопросов.
    • Встроенные методы в Python
  • Учебники по Pandas и Numpy
    • Numpy
      • Функция активации ReLU для глубокого обучения: полное руководство по выпрямленному линейному блоку
      • Как нормализовать массивы NumPy (минимальное-максимальное масштабирование, Z-оценка, L2)
      • NumPy where: Условная обработка элементов массива
      • NumPy linspace: создание равномерно расположенных массивов с помощью np.linspace
      • Как рассчитать векторное произведение в Python
      • Разделение NumPy: Разделение массива NumPy на части
      • NumPy: Лучшие способы применения функции к массиву
      • NumPy full: Создание массивов с заданным значением
      • NumPy clip(): Ограничьте значения массива минимальным и максимальным значениями
      • NumPy cumsum: Расчет кумулятивных сумм массивов NumPy
      • Изучаем функцию np.histogram в NumPy: создаем гистограмму
      • NumPy arange(): Полное руководство (с примерами)
      • Руководство по индексации и срезам массивов NumPy: Полное руководство
      • NumPy argmin(): Получение индекса минимального значения в массивах
      • Выравнивание массива с помощью NumPy flatten
      • Объединение массивов NumPy по различным осям с использованием функции stack
      • Удаление размерности из массивов NumPy с помощью NumPy Squeeze
      • Функция np.repeat() NumPy: Повторение массивов NumPy
      • Использование функции NumPy.exp() для вычисления экспоненты
      • Реализация функции сигмоида на Python
      • NumPy Pad: Использование np.pad() для дополнения массивов и матриц
      • np.argmax(): Как использовать NumPy Argmax
      • NumPy logspace: Понимание функции np.logspace()
      • Использование NumPy Tile для Расположения Массивов
      • NumPy Zeros: Создание массивов и матриц с нулями в NumPy
      • Использование числа Пи в Python (NumPy и Math)
      • Распределение Нормального (Гауссова) Распределения в Numpy (Случайное Нормальное в Numpy)
      • NumPy для Data Science на Python
      • Расчет скалярного произведения с использованием Numpy в Python
      • Расчет натурального логарифма на Python
    • Pandas
      • Python сводные таблицы – Полное руководство
      • Изучение API стиля Pandas
      • Объяснение группировки по нескольким столбцам в Pandas с примерами
      • Удаление индексной колонки DataFrame в Pandas: Руководство с примерами
      • Pandas Quantile: Расчет процентилей в DataFrame
      • Как рассчитать скользящее среднее (среднее арифметическое) в Pandas
      • Руководство по использованию метода fillna в Pandas для работы с отсутствующими данными в DataFrame
      • Pandas unique(): Получение уникальных значений в DataFrame
      • Распакуйте Ваши Данные с Помощью Функции Melt в Pandas
      • Pandas date_range: Как Создать Диапазон Дат в Pandas
      • Сброс индекса в Pandas: как сбросить индекс в Pandas
      • Pandas replace() – Замена значений в DataFrame Pandas
      • Перемещение столбца DataFrame Pandas на позицию (В начало и в конец)
      • Учебное пособие по Python Pandas: полное руководство
      • Pandas: Замена NaN на нули
      • Преобразование DataFrame Pandas в файл Pickle
      • Конвертация Pandas DataFrame в JSON
      • Преобразование DataFrame Pandas в Словарь
      • Преобразование Pandas DataFrame в Список
      • Чтение файлов Parquet в Pandas с помощью pd.read_parquet
      • Pandas dropna(): Удаление отсутствующих записей и столбцов в DataFrame
      • Как Добавить Новый Столбец в DataFrame Pandas
      • Подсчёт уникальных значений в Pandas
      • Отображение всех столбцов и строк в DataFrame Pandas
      • Pandas to_excel: Запись DataFrames в файлы Excel
      • Как использовать Pandas для чтения файлов Excel в Python
      • Преобразование списка словарей в Pandas DataFrame
      • Как добавить/вставить строку в DataFrame Pandas
      • Диаграмма рассеяния в Pandas: Как создать диаграмму рассеяния в Pandas
      • Pandas to_datetime: Преобразование строки Pandas в дату и время
      • Введение в Pandas для Data Science
      • Индексация, Выборка и Присваивание Данных в Pandas
      • Суммирование и Анализ Pandas DataFrame
      • Преобразование столбцов Pandas с помощью map и apply
      • Группировка данных в Pandas с использованием cut и qcut
      • Дата и время в Pandas и Python
      • Очистка и подготовка данных в Pandas и Python
      • Pandas GroupBy: группировка, суммирование и агрегация данных в Python
      • Pandas Дата и Время в Части Даты (месяц, год и т.д.)
      • Pandas: Получение номера строки из DataFrame
      • Вычисление Взвешенного Среднего в Pandas и Python
      • Как перемешать строки Pandas Dataframe в Python
      • Pandas: количество столбцов (подсчет столбцов в DataFrame)
      • Pandas Sum: сложение столбцов и строк DataFrame
      • Pandas Diff: Вычисление Разницы Между Строками Pandas
      • Нормализация столбца или датафрейма Pandas (с использованием Pandas или sklearn)
      • Функция Rank в Pandas: Ранжирование данных в Dataframe (Эквивалент SQL row_number)
      • Pandas Describe: Описательная статистика вашего Dataframe
      • Pandas Shift: Перемещение столбца DataFrame вверх или вниз
      • 7 Способов Выполнения Выборки Данных в Pandas
      • Экспорт DataFrame Pandas в CSV файл – Использование .to_csv()
      • Pandas: Итерация по строкам DataFrame в Pandas
      • Pandas: Преобразование значений столбца в строки
      • Дисперсия в Pandas: Вычисление дисперсии столбца в Pandas Dataframe
      • Pandas: Создание DataFrame из списков (5 способов!)
      • Pandas Rename Index: Как переименовать индекс DataFrame в Pandas
      • Pandas: Подсчёт уникальных значений в объекте GroupBy
      • Pandas: Добавить дни к колонке с датами
      • Среднее в Pandas: Как рассчитать среднее для одной или нескольких колонок
      • Pandas Column to List – Конвертируйте колонку Pandas в список
      • Транспонирование Dataframe в Pandas
      • Python: Разделение DataFrame Pandas
      • Как получить имена столбцов в DataFrame Pandas
      • Pandas: Количество строк в DataFrame (6 способов)
      • Создание пустого DataFrame Pandas и добавление данных
      • Как переименовать столбцы в Pandas DataFrame (с примерами)
      • Изменение порядка столбцов в Pandas: использование метода reindex и метода insert
      • Pandas get_dummies (One-Hot кодирование), объяснение
      • Относительные и Абсолютные Частоты в Python и Pandas
      • Финансовый год – Определение финансового года в Pandas
      • Как сортировать данные в DataFrame Pandas
  • Учебники Matplotlib и Seaborn
    • Seaborn
      • Регрессионные графики в Seaborn с использованием regplot и lmplot
      • Seaborn residplot – Построение остатков линейной регрессии
      • Seaborn jointplot() – Создание совместных графиков в Seaborn
      • Seaborn displot – Распределенческие графики в Python
      • Seaborn ecdfplot – Эмпирические функции накопленного распределения
      • Seaborn rugplot – Визуализация маргинальных распределений
      • Seaborn kdeplot – Создание графиков оценки плотности ядра
      • Seaborn histplot – Создание Гистограмм в Seaborn
      • Seaborn catplot – Визуализация категориальных данных в Python
      • Средняя тенденция для категориальных данных в Seaborn Pointplot
      • Seaborn stripplot: Jitter Plots для распределений категориальных данных
      • Seaborn Countplot – Подсчет категориальных данных в Python
      • Seaborn swarmplot: Bee Swarm Plots для распределения категориальных данных
      • Скрипичные графики Seaborn в Python: Полное руководство
      • Настройка расположения легенд Seaborn, меток, текста и т.д.
      • Тепловая карта Seaborn: Полное руководство
      • Создание многосекционных сеток в Seaborn с помощью FacetGrid
      • Удаление рамки в Seaborn: Как работать с рамкой
      • Заголовки и метки осей в Seaborn: добавление и настройка
      • Как установить Seaborn в Python (Исправление: no module named seaborn)
      • Seaborn relplot – Создание точечных и линейных графиков
      • Полное руководство по созданию точечных диаграмм (scatter plots) в Python с использованием Seaborn
    • Matplotlib
      • Режим Retina в Matplotlib: Улучшение Качества Графиков
      • Как построить функцию в Python с использованием Matplotlib
      • Как создать 3D-диаграммы рассеяния в Matplotlib
      • Как изменить размер шрифта в графике Matplotlib
      • Установка размера маркера в точечных диаграммах Matplotlib
      • Как изменить размер графика и фигуры в Matplotlib
      • Как добавить названия в Matplotlib: Заголовок, Подзаголовок, Названия Осей
      • Pandas Scatter Plot: Как создать диаграмму рассеяния в Pandas
      • Построение графиков в Python с помощью Matplotlib
      • Диаграммы рассеяния Matplotlib – Все, что вам нужно знать
      • Диаграммы с столбцами в Matplotlib – Узнайте все, что вам нужно знать
      • Линейные диаграммы Matplotlib – Всё, что вам нужно знать
      • Построение гистограммы в Python с Matplotlib и Pandas
  • Алгоритмы
    • Алгоритм поиска в ширину (BFS) в Python
    • Алгоритм поиска в глубину (DFS) на Python
  • AI создает хедж-фонд для анализа акций на Python
Powered by GitBook
On this page
  • Что вы научитесь делать в этом руководстве
  • Хотите вместо этого построить матрицу корреляции?
  • Понимание функции Seaborn heatmap()
  • Загрузка образца набора данных
  • Создание тепловой карты в Seaborn
  • Изменение цветовой карты в тепловой карте Seaborn
  • Изменение формата элементов тепловой карты Seaborn на квадратный
  • Изменение размера графика тепловой карты Seaborn
  • Добавить метки на график тепловой карты Seaborn
  • Добавление линий между элементами тепловой карты Seaborn
  • Изменение меток клещей на графике тепловой карты Seaborn
  • Настройка размера цветовой шкалы в тепловой карте Seaborn
  • Перемещение меток тепловой карты в верхнюю часть графика тепловой карты
  • Изменение экстремальных значений на графике тепловой карты Seaborn
  • Добавление заголовка и меток осей к графику тепловой карты Seaborn
  • Заключение
  • Дополнительные ресурсы
  1. Учебники Matplotlib и Seaborn
  2. Seaborn

Тепловая карта Seaborn: Полное руководство

PreviousНастройка расположения легенд Seaborn, меток, текста и т.д.NextСоздание многосекционных сеток в Seaborn с помощью FacetGrid

Last updated 2 months ago

Тепловые карты — ценные инструменты для быстрой визуализации больших объемов данных по шкале. В этом руководстве вы узнаете, как использовать Seaborn для создания красивых и информативных тепловых карт с помощью функции sns.heatmap(). Seaborn делает создание тепловых карт невероятно простым и интуитивно понятным, позволяя вам настраивать их знакомой функцией.

К концу этого руководства вы узнаете следующее

  • Как использовать функцию sns.heatmap() для создания тепловой карты в Seaborn

  • Как настроить тепловую карту с помощью цветов, интервалов и меток

  • Как изменить метки и заголовки вашей тепловой карты

Оглавление

Что вы научитесь делать в этом руководстве

Давайте рассмотрим, чему вы научитесь создавать в этом руководстве. На изображении ниже показан усеченный вид среднего температурного режима в Торонто, Канада, на протяжении года. Сразу же можно заметить несколько вещей, которые выделяют эту визуализацию:

  • Цвета используют традиционный переход от синего к красному для обозначения температуры.

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

  • Значения являются квадратами и имеют легкую линию между ними, что делает визуализацию более чистой.

Хотите вместо этого построить матрицу корреляции?

Понимание функции Seaborn heatmap()

Давайте уделим время для изучения возможностей функции sns.heatmap(). Существует множество параметров, которые позволяют настраивать вашу визуализацию. Мы не будем рассматривать все из них, но затронем самые важные.

seaborn.heatmap(data, *, vmin=None, vmax=None, cmap=None, center=None, robust=False,
annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True,
cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto',
mask=None, ax=None, **kwargs)

Как видно из приведенного выше блока кода, существует множество различных параметров. Некоторые из наиболее важных параметров функции Seaborn heatmap() включают в себя:

  • data= относится к используемому DataFrame Pandas.

  • cmap= позволяет настроить цветовую карту, используемую в визуализации

  • annot= позволяет вам настраивать, следует ли аннотировать тепловую карту (или какие данные использовать для аннотирования)

  • square= позволяет создавать квадратные значения на тепловой карте

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

Загрузка образца набора данных

Функция sns.heatmap() отличается от многих других функций Seaborn тем, что она явно использует двумерный массив, такой как DataFrame. Вместо указания столбцов x= и y=, Seaborn будет использовать весь DataFrame.

# Загрузка образец данных

import pandas as pd

def read_data():
    url = 'https://github.com/datagy/mediumdata/raw/master/toronto-weather.xlsx'
    cols = ['LOCAL_DATE', 'MEAN_TEMPERATURE']
    renames = {'LOCAL_DATE': 'Date', 'MEAN_TEMPERATURE': 'Temperature'}
    df = pd.read_excel(url, usecols=cols, parse_dates=['LOCAL_DATE'])
    df.rename(columns=renames, inplace=True)
    df['Day'] = df['Date'].dt.day
    df['Month'] = df['Date'].dt.month
    df = df[df['Day'] <= 28]

    summary = pd.pivot_table(data=df, index='Month', columns='Day', values='Temperature')
    return summary

df = read_data()
print(df.iloc[:3, :3])

# Возвращает:
# Day      1    2    3
# Month               
# 1      0.5  3.3  5.1
# 2     -0.5  1.3  3.1
# 3     -2.2  3.5  3.0

В функции выше мы создаем DataFrame, который имеет строки для каждого месяца и столбцы для каждого дня месяца. Обратите внимание, что, чтобы создать прямоугольную тепловую карту, мы убираем дни больше 28. Это сделано только для иллюстрации и, конечно, создает некоторые общие проблемы с данными.

Создание тепловой карты в Seaborn

Функция heatmap() из библиотеки Seaborn принимает 2-мерный DataFrame (или массив данных). Поэтому мы создали функцию, которая возвращает DataFrame с месяцами в виде строк и днями месяца в виде столбцов.

Чтобы создать тепловую карту в Seaborn, мы можем просто передать этот DataFrame в функцию sns.heatmap(). Seaborn автоматически определит многие аспекты данных, параметры которых вы научитесь настраивать позднее в этом руководстве.

# Создание простого теплового графика в Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df = read_data()
sns.heatmap(df, cmap='coolwarm', annot=True, fmt=".2f")
plt.show()

Во введённом выше блоке кода мы загрузили наши библиотеки, которые в данном случае включали Seaborn, Matplotlib и Pandas. Затем мы загрузили наш DataFrame, используя созданную ранее пользовательскую функцию.

Наконец, мы передали DataFrame в функцию sns.heatmap(), которая вернула объект осей. Затем мы можем отобразить график с помощью функции plt.show()

Это возвращает изображение

Мы можем сразу увидеть тенденции в данных. Однако мы действительно можем развивать то, что у нас есть, и настраивать визуализацию, чтобы сделать её ещё более понятной. Давайте начнем с изучения настройки цветовой карты, используемой в визуализации.

Изменение цветовой карты в тепловой карте Seaborn

Seaborn предоставляет несколько встроенных цветовых карт и позволяет создавать свои собственные. **Для передачи другой цветовой карты можно использовать параметр cmap=, который принимает цветовую карту Seaborn в качестве входных данных.

Обычно температуры изображаются от синего к красному, где синий - это холодная, а красный - горячая. Seaborn предоставляет цветовую палитру, которая делает именно это! Давайте посмотрим, как можно использовать цветовую палитру 'coolwarm' для изменения цветов нашей тепловой карты.

# Применение карты цветов к тепловому графику в Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df = read_data()
sns.heatmap(df, cmap='coolwarm')
plt.show()

В кодовом блоке выше мы использовали тот же код, что и раньше, только передали дополнительный параметр cmap. Это приводит к появлению изображения ниже:

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

Изменение формата элементов тепловой карты Seaborn на квадратный

Another common task is converting each item in the heatmap to be of a square format. This can be done by passing in square=True into the sns.heatmap() function.

Ещё одна распространенная задача — преобразование каждого элемента тепловой карты в квадратный формат. Это можно сделать, передав square=True в функцию sns.heatmap() .

Отображение элементов в виде квадратов может быть очень полезным для создания более равномерно распределенного визуального эффекта. Давайте посмотрим, как это выглядит на Python:

# Преобразование элементов теплового графика Seaborn в квадраты

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df = read_data()

sns.heatmap(df, cmap='coolwarm', square=True)
plt.show()

В приведенном выше блоке кода мы снова изменили вызов функции sns.heatmap() — указав Seaborn отображать значения в виде квадратов. Это вернуло:

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

Изменение размера графика тепловой карты Seaborn

Аргумент figsize= в функции subplots() Функция heatmap() из Seaborn возвращает объект axes из Matplotlib. Благодаря этому, мы можем изменить размер исходного объекта фигуры, используя Matplotlib.

Давайте рассмотрим, как можно изменить размер тепловой карты (heatmap).

# Изменение размера теплового графика Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

sns.heatmap(df, cmap='coolwarm', square=True)
plt.show()

В кодовом блоке выше мы используем функцию subplots() из Matplotlib для создания фигуры и объекта осей. В данном случае мы указали размер 14 на 6 дюймов.

Поскольку Seaborn работает с активной осью, нам не нужно указывать это явно. Однако, если вы работаете с несколькими осями, вы можете передать это в параметр ax= функции sns.heatmap()

Это возвращает:

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

Добавить метки на график тепловой карты Seaborn

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

  1. Используя булево значение, функция будет использовать значения из DataFrame, который передан в функцию

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

Давайте сначала посмотрим, как мы можем добавить метки к нашему текущему DataFrame

# Добавление меток к тепловому графику Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

sns.heatmap(df, cmap='coolwarm', square=True, annot=True)
plt.show()

В приведенном выше коде мы указали annot=True. Это указывает Seaborn использовать метки из DataFrame, который используется для самого теплового графика. Это выводит изображение ниже:

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

Применение пользовательского форматирования строк к графику тепловой карты Seaborn

Seaborn позволяет применять пользовательское форматирование строк к создаваемым им меткам. Для этого можно использовать параметр fmt=, который использует стандартное форматирование чисел.

Если мы хотим убедиться, что все наши значения отображаются в виде целых чисел, мы можем использовать строковое форматирование ',.0f'. Это позволит использовать запятые для разделения тысяч и обеспечит отсутствие значений после десятичных.

# Применение форматирования к меткам теплового графика Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

sns.heatmap(df, cmap='coolwarm', square=True, annot=True, fmt=',.0f')
plt.show()

В коде выше мы добавили fmt=',.0f', что указывает Seaborn округлить значения до целых, как показано ниже:

На изображении ниже теперь видно, что все метки обозначены последовательно. Однако они могут отвлекать и отнимать внимание от самого изображения. Давайте посмотрим, как мы можем настроить их дальше.

Форматирование меток на графике тепловой карты Seaborn

Seaborn предоставляет обширные возможности для форматирования аннотаций на тепловой карте. Чтобы форматировать аннотации на тепловой карте Seaborn, вы можете использовать параметр annot_kws=, который позволяет применять любые ключевые слова из объекта текста Matplotlib

Давайте посмотрим, как мы можем изменить размер и прозрачность этих значений:

# Изменение аннотаций в тепловом графику Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

sns.heatmap(df, cmap='coolwarm', square=True, 
    annot=True, fmt=',.0f', 
    annot_kws={'size': 'x-small', 'alpha': 0.25})
plt.show()

Во фрагменте кода выше, Seaborn был настроен на использование размера 'x-small' и значения прозрачности 0.25. Это возвращает изображение ниже:

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

Применение пользовательских меток на графике тепловой карты Seaborn

Мы можем дополнительно настроить метки в тепловой карте Seaborn, передав отдельный набор значений для использования. Мы можем передать отдельный набор меток в тепловую карту, используя параметр annot= .

Давайте рассмотрим, как мы можем выделить только минимальные и максимальные значения на тепловой карте:

# Применение пользовательского метки к тепловому графику Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

extremes = df.values.max(), df.values.min()
labels = df.applymap(lambda v: v if v in (extremes) else '')

sns.heatmap(df, cmap='coolwarm', square=True, 
    annot_kws={'size': 'x-small', 'alpha': 0.75}, 
    annot=labels, fmt='')   
plt.show()

Мы внесли несколько изменений в блок кода выше:

  1. Мы создали кортеж значений, содержащий максимальные и минимальные значения

  2. Затем мы использовали .applymap(), чтобы применить пользовательскую lambda-функцию ко всему DataFrame. Функция проверяет, является ли значение одним из крайних значений. Если да, то возвращает число, иначе возвращает пустое значение.

  3. Мы передаем наш новый DataFrame в параметр annot=. Также необходимо передать fmt='', так как функция ожидает числовые метки.

Это возвращает изображение ниже:

Мы видим, что это возвращает тепловую карту, где отмечены только наивысшие и наинизшие значения.

Добавление линий между элементами тепловой карты Seaborn

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

Давайте посмотрим, как можно добавить линию для разделения элементов в визуализации:

# Добавление линий к тепловому графику Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

sns.heatmap(df, cmap='coolwarm', square=True, 
    annot=True, fmt=',.0f', linewidths=0.5, linecolor='gray')
plt.show()

В кодовом блоке выше мы добавили linewidths=0.5, чтобы использовать ширину 0.5 для разделения линий.

Это делает каждый элемент немного более отличительным, что упрощает различение общих значений

Изменение меток клещей на графике тепловой карты Seaborn

Чтобы передать пользовательские метки делений в тепловую карту Seaborn, вы можете использовать параметр yticklabels= (или xticklabels= ).

Давайте посмотрим, как можно настроить ось Y, чтобы использовать сокращённое имя месяца, а не номер месяца. Для этого мы будем использовать модуль calendar и извлекать первые три буквы названия месяца с помощью генераторов списков в Python.

# Изменение меток оси X в тепловом графику Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import calendar

months = [month[:3] for month in calendar.month_name[1:]]

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

extremes = df.values.max(), df.values.min()
labels = df.applymap(lambda v: v if v in (extremes) else '')

sns.heatmap(df, cmap='coolwarm', square=True, 
    linewidths=0.5, annot_kws={'size': 'x-small', 'alpha': 0.75}, 
    annot=labels, fmt='', yticklabels=months)
plt.show()

Давайте разберем, что мы сделали в кодовом блоке выше:

  1. Мы импортировали модуль календаря

  2. Мы создали список имён, используя генератор списка, который берёт первые три буквы из названия каждого месяца.

  3. Мы затем передали этот список в параметр yticklabels=, чтобы применить эти метки к нашей тепловой карте.

Это вернуло изображение ниже:

Мы видим, что это делает визуализацию значительно чище и легче для понимания.

Настройка размера цветовой шкалы в тепловой карте Seaborn

В текущем визуализированном изображении шкала цвета слишком большая. **Мы можем легко настроить шкалу цвета тепловой карты Seaborn, используя параметр cbar_kws=, который принимает аргументы из функции цветовой шкалы Matplotlib.

Давайте посмотрим, как мы можем уменьшить цветовую шкалу, используя параметр shrink .

# Настройка размера колорбара в тепловом графику Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import calendar

months = [month[:3] for month in calendar.month_name[1:]]

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

extremes = df.values.max(), df.values.min()
labels = df.applymap(lambda v: v if v in (extremes) else '')

sns.heatmap(df, cmap='coolwarm', square=True, 
    linewidths=0.5, annot_kws={'size': 'x-small', 'alpha': 0.75}, 
    annot=labels, fmt='', 
    yticklabels=months,
    cbar_kws={"shrink": 0.8})
plt.show()

В приведенном выше блоке кода мы добавили cbar_kws={"shrink": 0.8}, что уменьшает размер цветовой шкалы на 20%. Это позволяет шкале идеально соответствовать высоте тепловой карты, как показано ниже

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

Перемещение меток тепловой карты в верхнюю часть графика тепловой карты

Мы также можем переместить метки тепловой карты наверх визуализации, используя метод ax.xaxis.tick_top(). Поскольку функция heatmap() возвращает объект осей Matplotlib, мы можем использовать методы осей, доступные в Matplotlib.

Чтобы переместить метки оси на верх, мы можем просто вызвать ax.xaxis.tick_top(), что перемещает все метки оси x наверх визуализации.

# Перемещение меток теплового графика на верхнюю часть

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import calendar

months = [month[:3] for month in calendar.month_name[1:]]

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

extremes = df.values.max(), df.values.min()
labels = df.applymap(lambda v: v if v in (extremes) else '')

sns.heatmap(df, cmap='coolwarm', square=True, 
    linewidths=0.5, annot_kws={'size': 'x-small', 'alpha': 0.75}, 
    annot=labels, fmt='', yticklabels=months,
    cbar_kws={"shrink": 0.5})
ax.xaxis.tick_top()

plt.show()

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

В следующем разделе вы узнаете, как изменить разброс тепловой карты Seaborn.

Изменение экстремальных значений на графике тепловой карты Seaborn

На данный момент в этом руководстве мы позволяли Seaborn настраивать распределение цветовой карты, которую он генерирует. Для настройки минимальных и максимальных значений, используемых в тепловой карте, мы можем использовать параметры vmax= и vmin= .

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

# Изменение экстремальных значений диапазона цветов

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import calendar

months = [month[:3] for month in calendar.month_name[1:]]

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

extremes = df.values.max(), df.values.min()
labels = df.applymap(lambda v: v if v in (extremes) else '')

sns.heatmap(df, cmap='coolwarm', square=True, linewidths=0.5, 
    annot_kws={'size': 'x-small', 'alpha': 0.75}, annot=labels, 
    fmt='', yticklabels=months,
    cbar_kws={"shrink": 0.5},
    vmax=extremes[0], vmin=-extremes[0])

plt.show()

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

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

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

Добавление заголовка и меток осей к графику тепловой карты Seaborn

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

  • .set_title() установит заголовок тепловой карты

  • .set_xaxis() и .set_yaxis() установят метки оси x и оси y соответственно.

Чтобы это сработало, нам сначала нужно создать явный объект осей. До сих пор мы работали с неявным объектом осей, но для применения этих методов нам нужен объявленный объект.

# Добавление заголовка к тепловому графику Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import calendar

months = [month[:3] for month in calendar.month_name[1:]]

df = read_data()
fig, ax = plt.subplots(figsize=(14, 6))

extremes = df.values.max(), df.values.min()
labels = df.applymap(lambda v: v if v in (extremes) else '')

sns.heatmap(df, cmap='coolwarm', square=True, linewidths=0.5, 
    annot_kws={'size': 'x-small', 'alpha': 0.75}, annot=labels, 
    fmt='', yticklabels=months,
    cbar_kws={"shrink": 0.5})

ax.set_title('Температуры в Торонто, Канада в 2020 году', weight='bold')
ax.set_xlabel('День месяца')
ax.set_ylabel('Месяц года')
plt.show()

В приведенном выше блоке кода мы добавили заголовок и подписи к осям. Мы также смогли применить стилизацию, используя аргумент ключевого слова weight=, что привело к следующей визуализации:

Добавив заголовок и изменив подписи осей, наша визуализация данных становится гораздо проще для понимания.

Заключение

Тепловые карты — это ценные инструменты для быстрой визуализации больших объемов данных по шкале. В этом руководстве вы узнаете, как использовать Seaborn для создания красивых и информативных тепловых карт с помощью функции sns.heatmap(). Seaborn делает процесс создания тепловых карт невероятно простым и интуитивно понятным, что позволяет вам настраивать их с помощью знакомой функции.

В этом руководстве вы сначала узнали, как создать простую тепловую карту с использованием Seaborn. Затем мы улучшили эту простую тепловую карту, настраивая её шаг за шагом, чтобы получить красивую визуализацию.

Дополнительные ресурсы

Для получения дополнительной информации по связанным темам, ознакомьтесь с ресурсами ниже:

  • Seaborn на Python для визуализации данных

  • Вычислить и построить матрицу корреляции в Python и Pandas

  • Диаграммы рассеяния Seaborn в Python: полное руководство

  • Создание парных графиков в Seaborn с помощью sns pairplot

Добавление заголовка к тепловой карте Seaborn
корреляционная матрица в Seaborn

Из-за этого давайте создадим индивидуальную DataFrame. Мы будем использовать набор данных, содержащий среднюю дневную температуру Торонто, Канада, в 2020 году, который вы . Ниже представлена функция read_data(), которая возвращает DataFrame в нужном нам формате.

Создание простой тепловой карты в Seaborn
Применение цветовой карты к тепловой карте
Создание квадратных элементов в тепловых картах Seaborn
Изменение размера тепловой карты Seaborn
Добавление меток к тепловой карте
Применение форматирования меток на тепловой карте Seaborn
Модификация Аннотаций в Тепловой Карте Seaborn
Отображение только некоторых аннотаций в тепловой карте Seaborn
Добавление линий между элементами тепловой карты в Seaborn
Изменение меток делений в тепловой карте Seaborn
Изменение размера цветовой карты в тепловой карте Seaborn
Перемещение меток осей тепловой карты наверх в Seaborn
Изменение экстремальных значений тепловой карты Seaborn
Добавление заголовка к тепловой карте Seaborn

можете найти здесь
Seaborn heatmap() – Официальная документация
Что вы научитесь делать в этом руководстве
Хотите вместо этого построить матрицу корреляции?
Понимание функции Seaborn heatmap()
Загрузка образца набора данных
Создание тепловой карты в Seaborn
Изменение цветовой карты в тепловой карте Seaborn
Изменение формата элементов тепловой карты Seaborn на квадратный
Изменение размера графика тепловой карты Seaborn
Добавить метки на график тепловой карты Seaborn
Добавление линий между элементами тепловой карты Seaborn
Изменение меток клещей на графике тепловой карты Seaborn
Настройка размера цветовой шкалы на тепловой карте Seaborn
Перемещение меток тепловой карты в верхнюю часть графика тепловой карты
Изменение экстремальных значений на графике тепловой карты Seaborn
Добавление заголовка и меток осей к графику тепловой карты Seaborn
Заключение
Дополнительные ресурсы
Applying a Colormap to a Seaborn Heatmap
Creating Square Items in Seaborn Heatmaps
Seaborn HeatMap Correlation Matrix in Pandas with Divergence
Creating a Simple Heatmap in Seaborn
Adding a Title to a Seaborn Heatmap
Adding Labels to a Seaborn Heatmap
Changing the Size of a Seaborn Heatmap
Applying Formatting in a Seaborn Heatmap Label
Showing Only Some Annotations in a Seaborn Heatmap
Moving Heatmap Axis Labels to the Top in Seaborn
Adding a Title to a Seaborn Heatmap
Adding Lines Between Heatmap Items in Seaborn
Changing Colormap Size in a Seaborn Heatmap
Changing Tick Labels in a Seaborn Heatmap
Modifying Annotations in a Seaborn Heatmap
Modifying Extreme Values of a Seaborn Heatmap