📅  最后修改于: 2023-12-03 14:52:48.930000             🧑  作者: Mango
Seaborn 是一个基于 Matplotlib 的 Python 数据可视化库,它提供了更高级别的接口,使数据可视化更简洁、美观。在 Seaborn 中,可以使用 heatmap()
函数创建热图。但是默认情况下,热图不会显示相应单元格的值,因此本文将介绍如何在热图单元格注释中添加文本。
首先需要导入 Seaborn 和 Matplotlib 库。
import seaborn as sns
import matplotlib.pyplot as plt
使用 Seaborn 自带的数据集,创建一个 flights
数据集。
flights = sns.load_dataset("flights").pivot("month", "year", "passengers")
使用 heatmap()
函数创建热图,并使用 annot=True
参数开启注释功能,此时可以使用 fmt
参数设置注释文本的格式。
sns.heatmap(flights, annot=True, fmt="d", cmap="YlGnBu")
annot
参数默认情况下会在热图单元格中显示相应的值,如果需要修改注释文本,可以使用 annot_kws
参数。例如,可以将注释文本的字体大小设置为 8。
sns.heatmap(flights, annot=True, fmt="d", cmap="YlGnBu", annot_kws={"fontsize":8})
在某些情况下,需要根据特定的条件为不同的单元格设置不同的注释文本。这时,可以使用 heatmap()
函数的 func
参数,该参数需要传入一个自定义的函数,该函数将根据热图单元格的值返回相应的注释文本。
下面的示例中,使用了 lambda
函数生成一个小于 100 的值的单元格将设置不同的注释文本。
def annotate_heatmap(data=None, color='white', **kwargs):
if data < 100:
value = "({:.1f}%)".format(data/100*100)
else:
value = "({:.0f})".format(data)
kwargs.pop('color')
text_kwargs = dict(color=color, fontsize=8)
text_kwargs.update(kwargs)
plt.text(kwargs['x'] + 0.5, kwargs['y'] + 0.5, s=value, ha='center', va='center', **text_kwargs)
sns.heatmap(flights, cmap="YlGnBu", annot=True, fmt='d', cbar=False,
annot_kws={'fontsize': 8},
cbar_kws={'label': 'Passengers'},
cell_renderer=annotate_heatmap)
这里使用了 cell_renderer
参数传入了一个名为 annotate_heatmap()
的自定义函数,该函数会根据单元格的值设置不同的注释文本。
使用 Seaborn 可以很容易地创建热图,并在热图单元格注释中添加文本。使用 annot=True
参数开启注释功能,并使用 fmt
参数设置注释文本格式。如果需要自定义注释文本,可以使用 annot_kws
参数,并将要显示的文本传递给 annot
。对于更高级的自定义,可以通过 func
参数传入自定义的函数来处理单元格注释文本。