【问题标题】: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 返回由col1col2、...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
相关资源
最近更新 更多