У меня есть функция, которая отображает тепловую карту для корреляционной матрицы DataFrame.Функция выглядит так:
def corr_heatmap(data):
columns = data.columns
corr_matrix = data.corr()
fig, ax = plt.subplots(figsize=(7, 7))
mat = ax.matshow(corr_matrix, cmap='coolwarm')
ax.set_xticks(range(len(columns)))
ax.set_yticks(range(len(columns)))
ax.set_xticklabels(columns)
ax.set_yticklabels(columns)
plt.setp(ax.get_xticklabels(), rotation=45, ha='left', rotation_mode='anchor')
plt.colorbar(mat, fraction=0.045, pad=0.05)
fig.tight_layout()
plt.show()
return mat
и при запуске с DataFrame выдает что-то вроде этого:
![enter image description here](https://i.stack.imgur.com/YvY3z.png)
Что я хочусделать, это построить две из этих тепловых карт бок о бок, но у меня возникли некоторые проблемы с этим.До сих пор я пытался назначить каждую тепловую карту объекту AxesImage и использовать вспомогательные участки для их построения.
mat1 = corr_heatmap(corr_mat1)
mat2 = corr_heatmap(corr_mat2)
fig = plt.figure(figsize=(15, 15))
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax1.plot(ma1)
ax2.plot(ma2)
, но это дает мне следующую ошибку:
TypeError: float() argument must be a string or a number, not 'AxesImage'
Может быть, кто-нибудь знает, как я могу построить два изображения тепловых карт рядом?Спасибо.
РЕДАКТИРОВАТЬ
В случае, если кому-то интересно, как будет выглядеть окончательный код для того, что я хотел сделать:
def corr_heatmaps(data1, data2, method='pearson'):
# Basic Configuration
fig, axes = plt.subplots(ncols=2, figsize=(12, 12))
ax1, ax2 = axes
corr_matrix1 = data1.corr(method=method)
corr_matrix2 = data2.corr(method=method)
columns1 = corr_matrix1.columns
columns2 = corr_matrix2.columns
# Heat maps.
im1 = ax1.matshow(corr_matrix1, cmap='coolwarm')
im2 = ax2.matshow(corr_matrix2, cmap='coolwarm')
# Formatting for heat map 1.
ax1.set_xticks(range(len(columns1)))
ax1.set_yticks(range(len(columns1)))
ax1.set_xticklabels(columns1)
ax1.set_yticklabels(columns1)
ax1.set_title(data1.name, y=-0.1)
plt.setp(ax1.get_xticklabels(), rotation=45, ha='left', rotation_mode='anchor')
plt.colorbar(im1, fraction=0.045, pad=0.05, ax=ax1)
# Formatting for heat map 2.
ax2.set_xticks(range(len(columns2)))
ax2.set_yticks(range(len(columns2)))
ax2.set_xticklabels(columns2)
ax2.set_yticklabels(columns2)
ax2.set_title(data2.name, y=-0.1)
plt.setp(ax2.get_xticklabels(), rotation=45, ha='left', rotation_mode='anchor')
plt.colorbar(im2, fraction=0.045, pad=0.05, ax=ax2)
fig.tight_layout()
Thisмог (при запуске с двумя Pandas DataFrames) выводить что-то по следующему изображению:
![enter image description here](https://i.stack.imgur.com/m3h3F.png)