一文玩转Seaborn热力图中刻度标签设置

1. 引言

在本教程中,我们将学习如何设置Seaborn库中热力图的刻度标签,包括设置自定义标签、调整旋转标签、控制字体大小、甚至隐藏标签等等。

闲话少说,我们直接开始吧!

2.举个栗子

首先我们来看个栗子,首先让我们导入我们所需要的库,如下所示:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

接着我们使用以下代码来生成我们需要的数据,代码如下:

np.random.seed(0)
data = np.random.rand(4, 6)
metrics = ['Metric A', 'Metric B', 'Metric C', 'Metric D']
days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
df = pd.DataFrame(data, index=metrics, columns=days)

接着我们来绘制我们默认的热力图,代码如下:

plt.figure(figsize=(10, 4))
sns.heatmap(df, annot=True)
plt.show()

运行后结果如下:
在这里插入图片描述

3.修改刻度标签文字显示

观察上述刻度标签,发现展示的文本刻度标签都比较长,我们可以使用函数set_xticklabels和函数set_yticklabels来修改对应的刻度标签,代码如下:

plt.figure(figsize=(10, 4))
ax = sns.heatmap(df, annot=True)
ax.set_xticklabels(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], rotation=45)
ax.set_yticklabels(['A', 'B', 'C', 'D'], rotation=0)
plt.show()

运行后结果如下:(所有的刻度标签上的文字都变成了缩写)

在这里插入图片描述

4.修改刻度标签文字方向

事实上,除了可以修改刻度标签显示文本缩写来避免文本显示时的重叠外,我们也可以调整刻度标签上文字显示的方向来达到类似效果,确保每个文本都可以独立显示出来。
首先我们来更新我们的数据集来包含更多的数据,如下:

extended_days = days + ['Sunday', 'Extra Day 1', 'Extra Day 2']
extended_data = np.random.rand(4, len(extended_days))
df_extended = pd.DataFrame(extended_data, index=metrics, columns=extended_days

扩充后的热力图的效果如下:

plt.figure(figsize=(12, 4))
sns.heatmap(df_extended, annot=True)
plt.show()

结果如下:
在这里插入图片描述

可以看到,当数据的列数增多之后,刻度标签上的显示文本就会显得很紧凑,此时我们来尝试将显示的文字方向进行选择,代码如下:

plt.figure(figsize=(12, 4))
ax = sns.heatmap(df_extended, annot=True)
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)
ax.set_yticklabels(ax.get_yticklabels(), rotation=0)
plt.show()

运行后结果如下:
在这里插入图片描述

5.修改刻度标签文字大小

更近一步,我们也可以修改刻度标签显示文本字体的大小,来避免不同刻度标签重叠的问题,代码如下:

plt.figure(figsize=(12, 4))
ax = sns.heatmap(df_extended, annot=True)
plt.xticks(fontsize=12, rotation=90)
plt.yticks(fontsize=12, rotation=0)
plt.show()

输出如下:
在这里插入图片描述

6.修改刻度标签对齐方式

事实上,我们也可以控制ha变量来调整刻度标签水平对齐,控制va变量来调整刻度标签垂直对齐,如下:

plt.figure(figsize=(12, 4))
ax = sns.heatmap(df_extended, annot=True)
ax.set_xticklabels(ax.get_xticklabels(), ha='center')  # Horizontal alignment
ax.set_yticklabels(ax.get_yticklabels(), va='center')  # Vertical alignment
plt.show()

结果如下:
在这里插入图片描述

7. 修改x轴标签至图像顶部

我们也可以将x轴的刻度标签移动到图像顶部,代码如下:

plt.figure(figsize=(12, 4))
ax = sns.heatmap(df_extended, annot=True)
ax.xaxis.tick_top()  # Move x-axis labels to top
ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='left')
plt.show()

得到结果如下:
在这里插入图片描述

8. 反转y轴标签

如果我们需要将y轴的刻度标签文字进行反转,我们可以使用invert_yaxis来实现上述目标,代码如下:

# Reversing the y-axis
plt.figure(figsize=(12, 4))
ax = sns.heatmap(df_extended, annot=True)
ax.invert_yaxis()
plt.show()

运行结果如下:
在这里插入图片描述

可以看到,y轴刻度标签文本从上往下由Metric A --> Metric D,转变成从下往上由Metric A --> Metric D

9. 隐藏刻度标签

同时,我们也可以通过将 xticksyticks设置为空,来实现隐藏刻度标签的目的。代码如下:

plt.figure(figsize=(12, 4))
ax = sns.heatmap(df_extended, annot=True)
plt.xticks([])
plt.yticks([])
plt.show()

运行后结果如下:
在这里插入图片描述

10.总结

本文重点介绍了在Seaborn库中调整绘制热力图时控制刻度标签的几种方法,使用这些方法可以可以游刃有余的来控制这些刻度标签的显示。

您学废了嘛?

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵卓不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值