Seaborn Change Clustermap可视化选项,而无需重做群集

时间:2018-12-17 14:00:46

标签: python seaborn hierarchical-clustering

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

例如,在以下示例中,我使用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通过不同的选项显示热图和树状图吗?

1 个答案:

答案 0 :(得分:1)

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。此函数返回一个collection对象(QuadMesh),该对象存储在主轴(g.ax_heatmap.collections)的集合列表中。由于AFAIK,seaborn不会在该轴上绘制其他任何东西,因此我们可以通过其索引QuadMesh获得[0]对象,然后我们可以使用适用于该对象的任何函数。

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