我希望能够改变某些方块以表示统计显着性。我知道我可以掩盖不具有统计意义的方块,但我仍然希望保留该信息(而不是将值设置为零)。执行此操作的选项包括1)使某些正方形上的文本变粗,2)添加类似阴影的功能,以便某些正方形具有点画,或3)向某些正方形添加符号。
有关于此的任何想法吗?谢谢!
答案 0 :(得分:11)
一种方法是直接访问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
的{{1}},并且集合的图案只能在整个集合中设置。要设置单个单元格的填充,您需要它们是不同的补丁,并且事情变得混乱。也许(希望)有些人比我更了解并且说这是错误的,而且这很容易 - 但如果我不得不猜测,我会说改变文字风格比设置舱口更容易。
答案 1 :(得分:10)
您可以绘制两次,将掩码应用于您不想第二次强调的单元格:
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"})