seaborn 在不重做聚类的情况下更改 clustermap 可视化选项

seaborn change clustermap visualization options without redoing the clustering

是否可以运行 seaborn.clustermap 之前获得的 ClusterGrid 对象?

例如我在下面的例子中使用clustermap获取g:

import seaborn as ns
data = sns.load_dataset("iris")
species = iris.pop("species")

g = sns.clustermap(
    data, 
    cmap="mako",
    col_cluster=False,
    yticklabels=False, figsize=(5, 10),
    method='ward',
    metric="euclidean"
)

我想尝试不同的可视化选项,例如不同的颜色图、图形大小、带标签和不带标签的外观等。

使用 iris 数据集,一切都非常快,但我有一个更大的数据集,聚类部分需要很多时间。

我可以使用 g 通过不同的选项显示热图和树状图吗?

clustermap返回的对象是ClusterGrid类型。 seaborn 中并未真正记录该对象,但是,它本质上只是一些 Axes 对象的容器。根据您要进行的操作类型,您可能只需要访问相关的 Axes 对象或图形本身:

# change the figure size after the fact
g.fig.set_size_inches((4,4))
# remove the labels of the heatmap
g.ax_heatmap.set_xticklabels([])

颜色图的访问有点困难。 clustermap 在后台使用 matplotlib pcolormesh。这个函数returns一个collection对象(QuadMesh),它存储在主轴集合列表中(g.ax_heatmap.collections)。因为,据我所知,seaborn 没有在该轴上绘制任何其他内容,我们可以通过其索引 [0] 获取 QuadMesh 对象,然后我们可以使用适用于该对象的任何函数。

# change the colormap used
g.ax_heatmap.collections[0].set_cmap('seismic')