如果我理解正确的话,有三列X和Y表示Z值的位置
考虑下面的例子。共有三列:X和Y包含位置信息(在本例中为类别),Z包含对热图进行着色的值。x = np.array(['a','b','c','a','b','c','a','b','c'])
y = np.array(['a','a','a','b','b','b','c','c','c'])
z = np.array([0.3,-0.3,1,0.5,-0.25,-1,0.25,-0.23,0.25])
然后我们从这些列创建一个数据帧并对它们进行转置(因此x、y和z实际上变成了列)。给出列名并确保Z_值是一个数字。df = pd.DataFrame.from_dict(np.array([x,y,z]).T)
df.columns = ['X_value','Y_value','Z_value']
df['Z_value'] = pd.to_numeric(df['Z_value'])
生成此数据帧。X_value Y_value Z_value
0 a a 0.30
1 b a -0.30
2 c a 1.00
3 a b 0.50
4 b b -0.25
5 c b -1.00
6 a c 0.25
7 b c -0.23
8 c c 0.25
因此,您无法创建热图,但是通过调用df.pivot('Y_value','X_value','Z_value'),您可以将数据帧旋转到可用于热图的窗体。pivotted= df.pivot('Y_value','X_value','Z_value')
生成的数据帧如下所示。X_value a b c
Y_value
a 0.30 -0.30 1.00
b 0.50 -0.25 -1.00
c 0.25 -0.23 0.25
然后,您可以将pivotted馈送到sns.heatmap以创建热图。sns.heatmap(pivotted,cmap='RdBu')
导致这个热图。
您可能需要对代码进行一些调整以满足您的精确需要。但由于我没有示例数据可供参考,所以我需要制作自己的示例。