如何显示 y 轴到 clustermap python 树状图?

how to show y axis to clustermap python dendrogram?

我在对抗python seaborn clustermap。 我想在热图上方绘制树状图,y 轴可见。 让我试着用这个例子更好地解释:

import seaborn as sns
from scipy.cluster import hierarchy
iris = sns.load_dataset("iris")
species = iris.pop("species")
g = sns.clustermap(iris,row_cluster=False,figsize = (18,14),dendrogram_ratio=(.1, .3))
den = hierarchy.dendrogram(g.dendrogram_col.linkage, labels = iris.columns, color_threshold=35,distance_sort=True,ax = g.ax_col_dendrogram) 

如您所见,它很好地显示了带有绿色和蓝色线条的 color_threshold,但它没有显示 y 轴刻度。

如果您只是从 scipy 调用层次结构,您将获得:

from scipy.cluster import hierarchy
hierarchy.dendrogram(g.dendrogram_col.linkage, labels = iris.columns, color_threshold=35,distance_sort=True) 

你会得到这个数字:

有人有办法在聚类图树状图上显示 y 轴吗? 谢谢 埃马努埃莱·马蒂尼

第一个需要改变的是打开 axis。然后你需要设置一个刻度定位器和格式化程序。或者,您可以设置水平网格,并且可以使一些书脊可见。

下面是一些示例代码:

import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter, MaxNLocator
import seaborn as sns
from scipy.cluster import hierarchy

iris = sns.load_dataset("iris")
species = iris.pop("species")
g = sns.clustermap(iris, row_cluster=False, figsize=(18, 14), dendrogram_ratio=(.1, .3))
den = hierarchy.dendrogram(g.dendrogram_col.linkage, labels=iris.columns,
                           color_threshold=35, distance_sort=True, ax=g.ax_col_dendrogram)
g.ax_col_dendrogram.axis('on')
# sns.despine(ax=g.ax_col_dendrogram, left=False, right=True, top=True, bottom=True)
g.ax_col_dendrogram.yaxis.set_major_locator(MaxNLocator())
g.ax_col_dendrogram.yaxis.set_major_formatter(ScalarFormatter())
g.ax_col_dendrogram.grid(axis='y', ls='--', color='grey')
# g.ax_col_dendrogram.yaxis.tick_right()
plt.show()