【发布时间】:2015-09-12 16:45:49
【问题描述】:
在我看来,热图函数完全应用于数据框。如果我只想将热图应用于数据集中的一组给定列怎么办?我想这可以通过巧妙地使用 cmap 来实现,但似乎无法让它发挥作用。
【问题讨论】:
-
非常感谢您提出这个问题。我正要发布这个。
在我看来,热图函数完全应用于数据框。如果我只想将热图应用于数据集中的一组给定列怎么办?我想这可以通过巧妙地使用 cmap 来实现,但似乎无法让它发挥作用。
【问题讨论】:
将所需的子数据帧传递给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) 可以接受您的代码将来可能会在没有警告的情况下中断。