如何创建一个简单的自定义热图?

时间:2019-04-15 20:02:51

标签: python pandas matplotlib seaborn

我想从pandas DataFrame df创建一个热图。 df有两列:

name  test
aa    False
bb    False
cc    True
dd    False

热图在X轴上应包含name值,在Y轴上应包含test值。因此,基本上应该有2行-Y轴上的False和True。当test的值为False时,False正方形标记为红色。当test的值为True时,True正方​​形用绿色标记。

这是我当前的代码:

import pandas as pd
import seaborn as sns

Index= df["name"].values
Cols = [True, False]
r = pd.DataFrame(df, index=Index, columns=Cols)
sns.heatmap(r, annot=True)

但是此代码无法正常工作。我该如何解决我的任务?

1 个答案:

答案 0 :(得分:2)

您需要重塑DataFrame以便按照您的方式进行绘制。

例如:

import matplotlib.pyplot as plt

df_new = df.set_index('name')['test'].astype(str).str.get_dummies().T

print(df_new)
name   aa  bb  cc  dd
False   1   1   0   1
True    0   0   1   0

然后您可以使用seaborn.heatmap

plt.figure(figsize=(8, 4))
sns.heatmap(df_new, cmap='RdYlGn')

enter image description here