如何在 sns 热图的每个轴上使用指定值?

How to use specified values in each axis of an sns heat map?

基本上,我需要使用 seaborn 创建一个热图,在 y 轴上有一组变量,在 x 轴上有一组变量。目前我只能让它在两个轴上显示所有变量,但是因为我有太多所以很难阅读。

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

df = pd.read('everything.csv')
a = df.drop(columns = ['1', '2', '3', '4'])
b = df.drop(columns = ['5', '6', '7'])

corr = df.corr(method = 'spearman')
sns.heatmap(corr, annot = True)
plt.show()

这基本上就是我正在使用的东西。我希望 a 绘制在热图的一个轴上,而 b 绘制在另一轴上。我敢肯定,对于比我更有经验的人来说,这很容易解决。

您可以计算完整的相关矩阵,然后对一些行和列进行子集化:

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

sns.set_style('white')
iris = sns.load_dataset('iris')
cols_A = ['sepal_length', 'sepal_width']
cols_B = ['petal_length', 'petal_width']
corr = iris[cols_A + cols_B].corr()

fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12, 5))
sns.heatmap(corr, vmin=-1, vmax=1, cmap='RdYlGn', annot=True, ax=ax1)
sns.heatmap(corr.loc[cols_A, cols_B], vmin=-1, vmax=1, cmap='RdYlGn', annot=True, ax=ax2)

plt.tight_layout()
plt.show()