【问题标题】:Seaborn heatmap by columnSeaborn 热图(按列)
【发布时间】:2015-09-12 16:45:49
【问题描述】:

在我看来,热图函数完全应用于数据框。如果我只想将热图应用于数据集中的一组给定列怎么办?我想这可以通过巧妙地使用 cmap 来实现,但似乎无法让它发挥作用。

【问题讨论】:

  • 非常感谢您提出这个问题。我正要发布这个。

标签: python heatmap seaborn


【解决方案1】:

将所需的子数据帧传递给seaborn.heatmap:

seaborn.heatmap(df[[col1, col2]], ...)

df[[col1, col2, ..., coln]] 从df 返回由col1、col2、...coln 组成的DataFrame。注意双括号。


如果您只想突出显示某些值并绘制热图,就好像所有其他值都为零一样, 您可以在调用 heatmap 之前复制 DataFrame 并将这些值设置为零。比如修改the example from the docs,

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import seaborn.matrix as smatrix

sns.set()

flights_long = sns.load_dataset("flights")
flights = flights_long.pivot("month", "year", "passengers")
flights = flights.reindex(flights_long.iloc[:12].month)

columns = [1953,1955]
myflights = flights.copy()
mask = myflights.columns.isin(columns)
myflights.loc[:, ~mask] = 0
arr = flights.values
vmin, vmax = arr.min(), arr.max()
sns.heatmap(myflights, annot=True, fmt="d", vmin=vmin, vmax=vmax)
plt.show()

产量

【讨论】:

  • 非常感谢您只是在搜索这个并且正要发布一个问题..没有问就得到了答案。
  • 感谢您的快速回复。我实际上尝试过这个,但这只会绘制所选列,而不是整个数据集,不是吗?我想要的只是将热图应用于选定的列,但其他列需要仍然可见。
  • “其他列需要仍然可见”是什么意思?是否意味着它们应该像每个单元格中的值为零一样绘制?
  • 我不会直接使用 _HeatMapper 对象,除非您 a) 知道自己在做什么,并且 b) 可以接受您的代码将来可能会在没有警告的情况下中断。
  • 是的,我的意思是应该绘制其他列,就好像每个单元格中的值是一个常数(例如零)。实际上,我只需要一列的热图。
猜你喜欢
  • 2018-05-15
  • 1970-01-01
  • 2020-10-12
  • 2020-08-04
  • 2022-12-14
  • 2021-11-01
  • 2021-04-14
  • 2020-07-06
  • 2017-08-18
相关资源
最近更新 更多