В этой статье мы расскажем о построении тепловых карт с помощью библиотеки matplotlib. Тепловая карта — отличный инструмент для визуализации данных на поверхности. Она выделяет данные с более высокой или более низкой концентрацией в распределении данных.

Тепловая карта

2D-тепловая карта — это инструмент визуализации данных, который помогает представить величину матрицы в виде цветной таблицы. В Python мы можем создавать 2D-тепловые карты, используя пакеты Matplotlib и Seaborn. Существуют различные методы построения 2D-тепловых карт, некоторые из которых обсуждаются ниже.

Примеры использования тепловых карт

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

  • Он используется для отображения корреляции между столбцами набора данных, где мы можем использовать более тёмный цвет для столбцов с высокой корреляцией.
  • Мы также можем использовать тепловые карты для построения различных временных рядов и финансовых данных, где по оси Y будет отображаться месяц, по оси X — год, а элементом тепловой карты будут наши данные.

Базовая тепловая карта с использованием библиотеки Python Matplotlib

Здесь мы построим тепловую карту с помощью функции matplotlib.pyplot.imshow().

Синтаксис: 

matplotlib.pyplot.imshow(X, cmap=None, alpha=None)

  • X:- это матрица входных данных, которая должна отображаться
  • cmap:- Colormap мы используем для отображения тепловой карты
  • alpha : - определяет непрозрачность или прозрачность тепловой карты
# Program to plot 2-D Heat map 
# using matplotlib.pyplot.imshow() method 
import numpy as np 
import matplotlib.pyplot as plt 

data = np.random.random(( 12 , 12 )) 
plt.imshow( data ) 

plt.title( "2-D Heat Map" ) 
plt.show() 

Вывод:

Hetamap из случайной матрицы 12x12

Hetamap из случайной матрицы 12 × 12

Выбор различных цветовых карт в Heatmap с помощью Matplotlib

Мы можем выбрать разные цвета для тепловой карты с помощью параметра cmap. cmap поможет нам сделать тепловую карту более информативной.

# Program to plot 2-D Heat map 
# using matplotlib.pyplot.imshow() method 
import numpy as np 
import matplotlib.pyplot as plt 

data = np.random.random((12, 12)) 
plt.imshow(data, cmap='autumn') 

plt.title("Heatmap with different color") 
plt.show() 

Вывод:

тепловая карта с параметром camp

тепловая карта с параметром camp

Добавление цветовой панели к тепловой карте с помощью Matplotlib

мы можем добавить цветовую шкалу к тепловой карте с помощью plt.colorbar(). Цветовая шкала показывает относительную интенсивность цвета в определённом диапазоне.

data = np.random.random((12, 12)) 
plt.imshow(data, cmap='autumn', interpolation='nearest') 

# Add colorbar 
plt.colorbar() 

plt.title("Heatmap with color bar") 
plt.show() 

Вывод:

Тепловая карта с цветовой шкалой

Тепловая карта с цветовой шкалой

Настраиваемая тепловая карта с использованием библиотеки Matplotlib

мы можем настроить эту тепловую карту, используя различные функции и параметры, чтобы сделать ее более информативной и красивой. мы будем использовать plt.annotate() для аннотирования значений в тепловой карте. Кроме того, мы будем использовать библиотеку цветов для настройки цвета тепловой карты.

import matplotlib.colors as colors 

# Generate random data 
data = np.random.randint(0, 100, size=(8, 8)) 

# Create a custom color map 
# with blue and green colors 
colors_list = ['#0099ff', '#33cc33'] 
cmap = colors.ListedColormap(colors_list) 

# Plot the heatmap with custom colors and annotations 
plt.imshow(data, cmap=cmap, vmin=0,\ 
		vmax=100, extent=[0, 8, 0, 8]) 
for i in range(8): 
	for j in range(8): 
		plt.annotate(str(data[i][j]), xy=(j+0.5, i+0.5), 
					ha='center', va='center', color='white') 

# Add colorbar 
cbar = plt.colorbar(ticks=[0, 50, 100]) 
cbar.ax.set_yticklabels(['Low', 'Medium', 'High']) 

# Set plot title and axis labels 
plt.title("Customized heatmap with annotations") 
plt.xlabel("X-axis") 
plt.ylabel("Y-axis") 

# Display the plot 
plt.show() 

Вывод:

заранее настроенная тепловая карта с использованием библиотеки matplotlib

заранее настроенная тепловая карта с использованием библиотеки matplotlib

Построение корреляционной матрицы набора данных с использованием тепловой карты

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

import pandas as pd 
import matplotlib.pyplot as plt 
from matplotlib import colors 

df = pd.read_csv("gold_price_data.csv") 

# Calculate correlation between columns 
corr_matrix = df.corr() 

# Create a custom color 
# map with blue and green colors 
colors_list = ['#FF5733', '#FFC300'] 
cmap = colors.ListedColormap(colors_list) 

# Plot the heatmap with custom colors and annotations 
plt.imshow(corr_matrix, cmap=cmap, vmin=0\ 
		, vmax=1, extent=[0, 5, 0, 5]) 
for i in range(5): 
	for j in range(5): 
		plt.annotate(str(round(corr_matrix.values[i][j], 2)),\ 
					xy=(j+0.25, i+0.7), 
					ha='center', va='center', color='white') 

# Add colorbar 
cbar = plt.colorbar(ticks=[0, 0.5, 1]) 
cbar.ax.set_yticklabels(['Low', 'Medium', 'High']) 

# Set plot title and axis labels 
plt.title("Correlation Matrix Of The Dataset") 
plt.xlabel("Features") 
plt.ylabel("Features") 

# Set tick labels 
plt.xticks(range(len(corr_matrix.columns)),\ 
		corr_matrix.columns, rotation=90) 
plt.yticks(range(len(corr_matrix.columns)), 
		corr_matrix.columns) 

# Display the plot 
plt.show()

Вывод:

Корреляционная матрица набора данных

Корреляционная матрица набора данных

Тепловая карта с использованием библиотеки Seaborn

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

# importing the modules 
import numpy as np 
import seaborn as sns 
import matplotlib.pyplot as plt 
	
# generating 2-D 10x10 matrix of random numbers 
# from 1 to 100 
data = np.random.randint(low=1, 
						high=100, 
						size=(10, 10)) 
	
# plotting the heatmap 
hm = sns.heatmap(data=data, 
				annot=True) 
	
# displaying the plotted heatmap 
plt.show()

Вывод:

Тепловая карта с использованием seaborn