seaborn 中的 ytick 描述

ytick descriptions in seaborn

我正在尝试将热图制作成具有大量 y 轴描述的热图。

我想知道在 y 刻度标签上是否有第二层和第三层。

fig, ax = plt.subplots(figsize=(20,25))

sns.set(style="darkgrid")


colName = [r'A', r'B', r'C', r'D', r'E']
colTitile = 'Test'
rowName = [r'a', r'b', r'c', r'd']
rowsName = [r'Vegetables', r'Fruits', r'Meats', r'Cheese',
            r'Candy', r'Other']
rowTitile = 'Groups'

heatmapdata= np.arange(100).reshape(24,5)

sns.heatmap(heatmapdata,
            cmap = 'turbo',
            cbar = True,
            vmin=0,
            vmax=100,
            ax=ax,
            xticklabels = colName,
            yticklabels = rowName) 

for x in np.arange(0,len(ax.get_yticks()),4):
    ax.axhline(x, color = 'white', lw=2)

有什么办法吗?我应该使用哪个功能? 谢谢!

可以在图形设置中设置行的标签,但除此之外,我认为注释功能是处理此问题的唯一方法。二级组名使用标注函数设置,坐标标准使用轴标准设置。使用带有轴标准的文本函数添加轴标签。

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(10,10))
sns.set(style="darkgrid")

colName = [r'A', r'B', r'C', r'D', r'E']
colTitile = 'Test'
rowName = [r'a', r'b', r'c', r'd']
rowsName = [r'Vegetables', r'Fruits', r'Meats', r'Cheese',
            r'Candy', r'Other']
rowTitle = 'Groups'

heatmapdata= np.arange(120).reshape(24,5)

sns.heatmap(heatmapdata,
            cmap='turbo',
            cbar=True,
            vmin=0,
            vmax=100,
            ax=ax,
            xticklabels=colName,
            yticklabels=np.tile(rowName, 6)) 

for x in np.arange(0,ax.get_ylim()[0],4):
    ax.axhline(x, color = 'white', lw=2)

for idx,g in enumerate(rowsName[::-1]):
    ax.annotate(g, xy=(-100, idx*90+45), xycoords='axes points', size=14)
ax.text(x=-0.3, y=0.5, s=rowTitle, ha='center', transform=ax.transAxes, rotation=90, font=dict(size=16))
plt.show()