Sle*_*dge 1 python seaborn jupyter
我有一个由值矩阵构建的 seaborn 热图。矩阵的每个元素对应一个实体,我想为矩阵中的每一行/列制作刻度标签。
我尝试使用该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()))
Run Code Online (Sandbox Code Playgroud)
仍然有矩阵索引作为标签:
关于如何正确更改这些标签的任何想法将不胜感激。
编辑:如果重要的话,我正在使用 jupyter notebooks 来做这件事。
您正在设置刚刚创建的轴的 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)
Run Code Online (Sandbox Code Playgroud)