如何构建热图?

How to build a heatmap?

我想构建一个热图,其中 Y 轴是树的数量,X 轴是叶子的数量,中心是 auc-roc 这是我的代码

df = pd.DataFrame(store,columns = ['n_trees' , 'n_leafs', 'auc-roc']) 
df.set_index(['n_trees'], inplace=True)
ax = sns.heatmap(df)

我的数据框如下所示:

         n_leafs   auc-roc
n_trees                   
10             1  0.7
10             3  0.892529
10             5  0.107495
159            1  0.155
159            3  0.7581
...          ...       ...
1202           3  0.420
1202           5  0.422
1351           1  0.398
1351           3  0.273
1351           5  0.795

我得到了这张热图,这不是我想要的。如何删除X轴上的auc-roc并转移到中心?

您需要使用示例数据集将数据转换为长格式:

import pandas as pd
import seaborn as sns
import numpy as np

np.random.seed(111)
df = pd.DataFrame({'n_trees':np.repeat([10,159,1202,1305],3),
                  'n_leafs':[1,3,5]*4,
                   'auc-roc':np.random.uniform(0,1,12)})

Pivot 会变成这样:

df.pivot(index="n_trees",columns="n_leafs")

我们可以旋转和绘图:

sns.heatmap(df.pivot(index="n_trees",columns="n_leafs"))

通过reset_index重置索引,然后使用pivot转换table。

df = df.reset_index()
ax = sns.heatmap(df.pivot(*df), annot=True)