是否可以在先前获得的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
通过不同的选项显示热图和树状图吗?
答案 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')