Matplotlib使用matshow绘制热力图时如何显示全部刻度标签
问题根源
ax.matshow()方法调用时会自动重置坐标轴的刻度、定位器配置,你在调用该方法前设置的刻度参数会被直接覆盖,因此无法生效。
修复方案
调整代码执行顺序,先完成热力图绘制,再配置刻度和对应标签即可,完整可运行代码如下:
import pandas as pd import numpy as np import matplotlib.pyplot as plt names = list('ABCDEDFGHIJKLMNOPQRSTU') # 生成随机测试数据 df = pd.DataFrame(np.random.randint(0,100,size=(100, 22)), columns=names) fig = plt.figure() ax = fig.add_subplot(111) cor_matrix = df.corr() # 先绘制热力图 ax.matshow(cor_matrix) # 再设置刻度位置和对应的标签 ax.set_xticks(np.arange(len(names))) ax.set_xticklabels(names) ax.set_yticks(np.arange(len(names))) ax.set_yticklabels(names) plt.show()
如果不需要自定义字母标签,仅需要显示全部数字索引刻度,仅需要把原代码中set_xticks、set_yticks两行移动到ax.matshow(cor_matrix)之后即可。
内容的提问来源于stack exchange,提问作者harcipulyka
相关产品推荐
相关产品推荐

