user458
user458

Reputation: 389

How to build a heatmap?

I want to build a heatmap where on Y-axis will be number of trees, on X number of leafs, and in the center auc-roc Here is my code

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

My dataframe looks like this:

         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

and I get this heatmap, not something I wanted. How to delete auc-roc on X-axis and transfer it to the center?

enter image description here

Upvotes: 6

Views: 389

Answers (2)

Nk03
Nk03

Reputation: 14949

Reset the index via reset_index and then use pivot to transform the table.

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

enter image description here

Upvotes: 1

StupidWolf
StupidWolf

Reputation: 46898

You need to pivot your data into a long format, using an example dataset:

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 will make it like this:

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

enter image description here

We can pivot and plot:

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

enter image description here

Upvotes: 2

Related Questions