一种方法是直接访问Text
对象并更改其权重/样式。以下代码将获取一些示例数据,并尝试使每个等于118的条目突出显示:
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax = sns.heatmap(flights, annot=True, fmt="d")
for text in ax.texts:
text.set_size(14)
if text.get_text() == '118':
text.set_size(18)
text.set_weight('bold')
text.set_style('italic')
我不是matplotlib/seaborn的专家,但我认为要求热力图中的单个单元格有斜纹必须要做一些工作。简而言之,热力图是Collection
的matplotlib
Patches
,一个集合的阴影只能在整个集合上设置。要设置单个单元格的阴影,您需要将它们作为不同的补丁,在这种情况下变得混乱。也许(希望)比我更有知识的人可以过来说这是错的,而且很容易 - 但如果我猜的话,改变文本样式将比设置阴影更容易。
你可以绘制两次图表,第二次应用掩码来标记不需要强调的单元格:
import numpy as np
import seaborn as sns
x = np.random.randn(10, 10)
sns.heatmap(x, annot=True)
sns.heatmap(x, mask=x < 1, cbar=False,
annot=True, annot_kws={"weight": "bold"})