如何在热力图中同时在顶部和底部、左侧和右侧显示坐标轴刻度。

7

我正在尝试使用sns.heatmap函数绘制一个大热图。然而,由于地图太大,有点难以找到与行和列相对应的xtick标签或ytick标签。我可以将xtick和xlabels添加到顶部,并将ytick和ylabels也添加到右边吗?

我已经尝试了很多不同的方法,但它们都没有奏效。

2个回答

10
通常的方法是通过tick_params,该方法具有labelrotation参数,并接受rotation
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(0)
import seaborn as sns

uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data)
ax.tick_params(right=True, top=True, labelright=True, labeltop=True, labelrotation=0)

plt.show()

输入图像描述

  • 没有 labelrotation=0rotation=0

输入图像描述


非常感谢。是的,你完全理解我的问题。但我之前遇到的主要问题是我的图中x和y轴标签都是文本标签。当我使用ax.tick_params时,所有标签的旋转都会混乱,这使得标签无法清晰显示。 - Yvonne.Tian
所以,我在一开始就尝试了ax.tick_params函数来解决我的问题,但是旋转问题无法解决。那么我想问是否有其他方法来解决这个问题。如果您能进一步帮助我解决这个问题,我将非常感激。非常感谢。 - Yvonne.Tian
rotation=0怎么样? - ImportanceOfBeingErnest

4

使用 matplotlib 中的 tick_params,可以放置所有边缘的坐标轴刻度。

#Get sample correlation data to plot something. 'data' is a dataframe
corr=data.corr()

#Create Heatmap
axr = sns.heatmap(corr,cmap="coolwarm", annot=True, linewidths=.5,cbar=False)

#Set all sides
axr.tick_params(right=True, top=True, labelright=True, labeltop=True,rotation=0)

#Rotate X ticks
plt.xticks(rotation='vertical')

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接