Тепловая карта питон seaborn

seaborn.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 ) #

Plot rectangular data as a color-encoded matrix.

This is an Axes-level function and will draw the heatmap into the currently-active Axes if none is provided to the ax argument. Part of this Axes space will be taken and used to plot a colormap, unless cbar is False or a separate Axes is provided to cbar_ax .

Parameters : data rectangular dataset

2D dataset that can be coerced into an ndarray. If a Pandas DataFrame is provided, the index/column information will be used to label the columns and rows.

vmin, vmax floats, optional

Values to anchor the colormap, otherwise they are inferred from the data and other keyword arguments.

cmap matplotlib colormap name or object, or list of colors, optional

The mapping from data values to color space. If not provided, the default will depend on whether center is set.

center float, optional

The value at which to center the colormap when plotting divergent data. Using this parameter will change the default cmap if none is specified.

robust bool, optional

If True and vmin or vmax are absent, the colormap range is computed with robust quantiles instead of the extreme values.

annot bool or rectangular dataset, optional

If True, write the data value in each cell. If an array-like with the same shape as data , then use this to annotate the heatmap instead of the data. Note that DataFrames will match on position, not index.

fmt str, optional

String formatting code to use when adding annotations.

annot_kws dict of key, value mappings, optional

Keyword arguments for matplotlib.axes.Axes.text() when annot is True.

linewidths float, optional

Width of the lines that will divide each cell.

linecolor color, optional

Color of the lines that will divide each cell.

cbar bool, optional

Whether to draw a colorbar.

cbar_kws dict of key, value mappings, optional

cbar_ax matplotlib Axes, optional

Axes in which to draw the colorbar, otherwise take space from the main Axes.

square bool, optional

If True, set the Axes aspect to “equal” so each cell will be square-shaped.

xticklabels, yticklabels “auto”, bool, list-like, or int, optional

If True, plot the column names of the dataframe. If False, don’t plot the column names. If list-like, plot these alternate labels as the xticklabels. If an integer, use the column names but plot only every n label. If “auto”, try to densely plot non-overlapping labels.

Читайте также:  Java событие нажатие мыши

mask bool array or DataFrame, optional

If passed, data will not be shown in cells where mask is True. Cells with missing values are automatically masked.

ax matplotlib Axes, optional

Axes in which to draw the plot, otherwise use the currently-active Axes.

kwargs other keyword arguments

All other keyword arguments are passed to matplotlib.axes.Axes.pcolormesh() .

Returns : ax matplotlib Axes

Axes object with the heatmap.

Plot a matrix using hierarchical clustering to arrange the rows and columns.

Pass a DataFrame to plot with indices as row/column labels:

glue = sns.load_dataset("glue").pivot("Model", "Task", "Score") sns.heatmap(glue) 
/var/folders/qk/cdrdfhfn5g554pnb30pp4ylr0000gn/T/ipykernel_77613/2862412127.py:1: FutureWarning: In a future version of pandas all arguments of DataFrame.pivot will be keyword-only. glue = sns.load_dataset("glue").pivot("Model", "Task", "Score") 

../_images/heatmap_1_1.png

Use annot to represent the cell values with text:

../_images/heatmap_3_0.png

Control the annotations with a formatting string:

sns.heatmap(glue, annot=True, fmt=".1f") 

../_images/heatmap_5_0.png

Use a separate dataframe for the annotations:

sns.heatmap(glue, annot=glue.rank(axis="columns")) 

../_images/heatmap_7_0.png

sns.heatmap(glue, annot=True, linewidth=.5) 

../_images/heatmap_9_0.png

Select a different colormap by name:

../_images/heatmap_11_0.png

Or pass a colormap object:

sns.heatmap(glue, cmap=sns.cubehelix_palette(as_cmap=True)) 

../_images/heatmap_13_0.png

Set the colormap norm (data values corresponding to minimum and maximum points):

sns.heatmap(glue, vmin=50, vmax=100) 

../_images/heatmap_15_0.png

Use methods on the matplotlib.axes.Axes object to tweak the plot:

ax = sns.heatmap(glue, annot=True) ax.set(xlabel="", ylabel="") ax.xaxis.tick_top() 

Источник

Seaborn Heatmaps: 13 способов настроить визуализацию матрицы корреляции

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

А поскольку визуализация обычно проще к пониманию, чем табличные данные, — тепловые карты, как правило, используются для визуализации корреляционных матриц. Простой способ построить тепловую карту в Python — это использовать библиотеку Seaborn.

Аргументы тепловой карты Seaborn

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

Но что еще мы можем получить из тепловой карты, кроме простого графика корреляционной матрицы?

В двух словах: ОЧЕНЬ МНОГОЕ.

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

Начало работы с Seaborn

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

1. #importing all the libraries needed
2. import seaborn as sns
3. import numpy as np
4. import pandas as pd
5. import matplotlib.pyplot as plt
6.
7. tips_df = sns.load_dataset('tips')
8. tips_df.head()

Обратите внимание: если вы используете Google Colab или какой-либо пакет Anaconda, вам не нужно устанавливать Seaborn; вам нужно только импортировать его. В противном случае, используйте эту ссылку для установки Seaborn.

Наши данные, которые называются Tips (предварительно установленный набор данных в библиотеке Seaborn), имеют 7 столбцов, состоящих из 3 числовых и 4 категориальных признаков. Каждая строка отражает тип клиента (будь то мужчина или женщина, курильщик или некурящий), который ужинает или обедает в определенный день недели. Также фиксируется общая сумма счета, чаевые и размер стола для гостя. (Для получения дополнительной информации о предварительно установленных наборах данных в библиотеке Seaborn, кликните здесь).

Читайте также:  Ошибка from main cpp

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

Вот как выглядит DataFrame после обработки данных:

Посмотреть, как были обработаны данные, можно здесь.

Как упоминалось ранее, функция тепловой карты Seaborn может принимать 18 аргументов.

Вот как выглядит функция со всеми аргументами:

sns.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)

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

Чтобы лучше понять аргументы, мы сгруппируем их в 4 категории:

  1. Основы;
  2. Регулировка оси (измерительной шкалы);
  3. Эстетика;
  4. Изменение формы матрицы.

Основы

1. Самый важный аргумент в функции — ввод данных, поскольку конечной целью является построение корреляции. Метод .corr() будет добавлен к данным в качестве первого аргумента.

2. Достаточно интерпретировать данные, используя только первый аргумент. Для еще более точной интерпретации необходимо добавить аргумент annot=True , который помогает отобразить коэффициент корреляции.

sns.heatmap(df_new.corr(), annot = True)

3. В некоторых случаях, коэффициенты корреляции могут приближаться к 5 десятичным знакам. Хорошим приемом для уменьшения отображаемого числа и улучшения читабельности является вставка аргумента fmt =’.3g’ или fmt = ‘.1g’ , потому что, по умолчанию, функция отображает две цифры после запятой (больше нуля), т.е. fmt=’.2g’ (Это не означает, что она всегда отображает два знака после запятой). Давайте определим аргумент по умолчанию fmt=’.1g’ .

sns.heatmap(df_new.corr(), annot = True, fmt='.1g')

Для остальной части этого урока мы будем придерживаться значения по умолчанию fmt=’.2g’

Регулировка оси (измерительной шкалы)

4. Следующие три аргумента связаны с масштабированием цветовой шкалы. Бывают моменты, когда шкала не начинается с нуля, отрицательного числа или заканчивается на определенном числе — или даже имеет отдельный центр. Все это можно настроить, указав эти три аргумента: vmin минимальное значение шкалы; vmax максимальное значение шкалы; и center= . По умолчанию, все три не указаны. Допустим, мы хотим, чтобы наша цветовая шкала была от -1 до 1 и была центрирована на 0.

sns.heatmap(df_new.corr(), annot = True, vmin=-1, vmax=1, center= 0)

Одно очевидное изменение, кроме изменения масштаба, заключается в изменении цвета. Это связано с изменением center от None до Zero или любое другое число. Но это не означает, что мы не можем вернуть прошлый цвет или изменить его на любой другой. Сейчас посмотрим, как это сделать.

Читайте также:  Call static var php

Эстетика

5. Сейчас изменим цвет, используя аргумент cmap

sns.heatmap(df_new.corr(), annot = True, vmin=-1, vmax=1, center= 0, cmap= 'coolwarm')

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

6. По умолчанию, толщина и цвет границы каждой строки матрицы установлены на 0 и белый соответственно. Бывает, когда тепловая карта может выглядеть лучше с некоторой толщиной границы и изменением цвета. В этом случае, применяются аргументы linewidths и linecolor . Давайте укажем linewidths и linecolor на 3 и black соответственно.

sns.heatmap(df_new.corr(), annot = True, vmin=-1, vmax=1, center= 0, cmap= 'coolwarm', linewidths=3, linecolor='black')

Для остальной части этого урока мы вернемся к значениям аргументов cmap , linecolor и linewidths по умолчанию. Это можно сделать с помощью вставки cmap=None , linecolor=’white’ и linewidths=0 или не вставляя аргументы вообще (что мы и собираемся делать).

7. На данный момент цветовая шкала тепловой карты отображается вертикально. Ее можно сделать горизонтальной, указав аргумент cbar_kws .

sns.heatmap(df_new.corr(), annot = True, cbar_kws= )

8. Также бывают случаи, когда лучше вообще убрать цветовую шкалу. Это можно сделать, указав cbar=False .

sns.heatmap(df_new.corr(), annot = True, cbar=False)

В оставшейся части этого урока мы будем отображать цветовую шкалу.

9. Посмотрите поближе на матрицу выше — каждая ячейка прямоугольной формы. Мы можем изменить форму ячеек на квадратную с помощью аргумента square=True .

sns.heatmap(df_new.corr(), annot = True,square=True)

Изменение формы матрицы

Изменение всей формы матрицы с прямоугольной на треугольную не так просто. Для этого нам нужно импортировать методы NumPy .triu() и .tril() , а затем указать аргумент тепловой карты Seaborn, который называется mask=

.triu() является методом в NumPy, который возвращает нижний треугольник любой заданной ему матрицы, в то время как .tril() возвращает верхний треугольник любой заданной ему матрицы.

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

Сначала с помощью np.trui() метода:

matrix = np.triu(df_new.corr())
sns.heatmap(df_new.corr(), annot=True, mask=matrix)

Теперь с помощью np.tril() метода:

mask = np.tril(df_new.corr())
sns.heatmap(df_new.corr(), annot=True, mask=mask)

В заключение

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

Источник

Оцените статью