【问题标题】:Relabel axis ticks in seaborn heatmap在 seaborn 热图中重新标记轴刻度
【发布时间】:2021-12-20 10:27:18
【问题描述】:

我有一个海生热图,我是从一个值矩阵构建的。矩阵的每个元素对应一个实体,我想为矩阵中的每一行/列制作刻度标签。

我尝试使用ax.set_xticklabel() 函数来完成此操作,但它似乎什么也没做。这是我的代码:

type(jr_matrix)
>>> numpy.ndarray

jr_matrix.shape
>>> (15, 15)

short_cols = ['label1','label2',...,'label15'] # list of strings with len 15

fig, ax = plt.subplots(figsize=(13,10)) 
ax.set_xticklabels(tuple(short_cols)) # i also tried passing a list
ax.set_yticklabels(tuple(short_cols))
sns.heatmap(jr_matrix, 
            center=0, 
            cmap="vlag", 
            linewidths=.75, 
            ax=ax,
            norm=LogNorm(vmin=jr_matrix.min(), vmax=jr_matrix.max()))

仍然有矩阵索引作为标签:

任何关于如何正确更改这些标签的想法都将不胜感激。

编辑:如果这很重要,我正在使用 jupyter 笔记本进行此操作。

【问题讨论】:

  • 成功了,谢谢!

标签: python jupyter seaborn


【解决方案1】:

您正在设置刚刚创建的轴的 x 和 y 刻度标签。然后,您将绘制 seaborn 热图,该热图将覆盖您刚刚设置的刻度标签。

解决方法是先创建热图,然后设置刻度标签:

fig, ax = plt.subplots(figsize=(13,10)) 

sns.heatmap(jr_matrix, 
            center=0, 
            cmap="vlag", 
            linewidths=.75, 
            ax=ax,
            norm=LogNorm(vmin=jr_matrix.min(), vmax=jr_matrix.max()))

# passing a list is fine, no need to convert to tuples
ax.set_xticklabels(short_cols)
ax.set_yticklabels(short_cols)

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 2020-04-19
    • 2021-10-27
    • 2017-04-05
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多