【问题标题】:How to create a simple custom heatmap?如何创建简单的自定义热图?
【发布时间】:2019-09-05 20:46:55
【问题描述】:

我想从 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)

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

【问题讨论】:

  • 您希望您的热图究竟是什么样的?
  • @QuangHoang:请看 Chris A 的回答 这是我所期待的。

标签: python pandas matplotlib seaborn


【解决方案1】:

您需要重塑您的 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')

【讨论】:

  • 谢谢。这正是我一直在寻找的。如何控制黑框的颜色和热图的大小?
  • 也许可以试试cmap='PiYg' ?可能需要一些试验
  • 可以通过将figsize传递给sns.heatmap来控制热图的大小
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 2017-07-28
  • 2019-07-29
  • 1970-01-01
  • 2017-07-08
相关资源
最近更新 更多