如何在 sns 热图中包含标签

数据挖掘 Python 可视化 麻木的 海运
2021-09-15 04:58:15

我得到了这个矩阵

    120     100     80      40      20      10      5       0
120 64.21   58.20   51.20   56.37   47.00   45.61   46.86   2.16
100 62.84   57.80   50.60   51.32   39.43   39.30   42.80   0.89
80  62.62   56.20   51.20   51.61   46.23   37.20   42.20   5.32
40  62.05   52.10   44.20   48.79   42.22   35.16   41.80   1.81
20  61.65   50.90   42.30   46.23   44.83   32.70   41.50   6.24
10  59.69   50.20   40.10   40.20   44.28   32.80   39.90   12.31
5   59.05   49.20   40.60   38.90   44.10   30.80   32.80   9.91
0   56.20   49.10   40.50   38.60   36.20   32.20   31.50   0.00

我知道如何通过将其指定为 numpy 数组然后使用来绘制内部值的热图

ax = sns.heatmap(nd, annot=True, fmt='g')

但是有人可以帮我如何包含列和行标签吗?列标签和行标签给定(120,100,80,42等)

2个回答

我遇到了这样的问题:您想在 seaborn 热图上的 x 和 y 轴上显示标签。因此,该sns.heatmap()函数有两个参数,它们分别xticklabels用于 x 轴和yticklabelsy 轴标签。

按照下面的代码片段

import seaborn as sns # for data visualization
flight = sns.load_dataset('flights') # load flights datset from GitHub seaborn repository

# reshape flights dataeset in proper format to create seaborn heatmap
flights_df = flight.pivot('month', 'year', 'passengers') 

sns.heatmap(flights_df)# create seaborn heatmap

输出>>> 在此处输入图像描述

现在,我们正在使用 xticklabelsyticklabelssns.heatmap() 参数更改 x 和 y 轴标签。

x_axis_labels = [1,2,3,4,5,6,7,8,9,10,11,12] # labels for x-axis
y_axis_labels = [11,22,33,44,55,66,77,88,99,101,111,121] # labels for y-axis

# create seabvorn heatmap with required labels
sns.heatmap(flights_df, xticklabels=x_axis_labels, yticklabels=y_axis_labels)

输出>>> 在此处输入图像描述

如需深入解释,请遵循seaborn 热图教程。

以下是我们如何在 sns 热图中添加简单的 XY 标签:

s = sns.heatmap(cm_train, annot=True, fmt='d', cmap='Blues')
s.set(xlabel='X-Axis', ylabel='Y-Axis')

或者

s.set_xlabel('X-Axis', fontsize=10)
s.set_ylabel('Y-Axis', fontsize=10)