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. 隐藏刻度标签
同时,我们也可以通过将 xticks
和yticks
设置为空,来实现隐藏刻度标签的目的。代码如下:
plt.figure(figsize=(12, 4))
ax = sns.heatmap(df_extended, annot=True)
plt.xticks([])
plt.yticks([])
plt.show()
运行后结果如下:
10.总结
本文重点介绍了在Seaborn
库中调整绘制热力图时控制刻度标签的几种方法,使用这些方法可以可以游刃有余的来控制这些刻度标签的显示。
您学废了嘛?