python - seaborn 更改聚类图可视化选项,无需重做聚类

标签 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 使用不同的选项显示热图和树状图吗?

最佳答案

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) 中。因为,据我所知,seaborn 不会在该轴上绘制任何其他内容,我们可以通过索引 [0] 获取 QuadMesh 对象,然后我们可以使用任何适用的函数到那个对象。

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

关于python - seaborn 更改聚类图可视化选项,无需重做聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53816794/

相关文章:

Python - 如何将多维列表排序为二维列表?

java - 按顺序向 Kafka 发送不同消息类型的良好做法

python - 六边形联合图的 Seaborn 成对矩阵

R - 系统图标签到向量

opencv - OpenCV 中的层次聚类

algorithm - 基于纬度/经度的物流路由和隔离算法

python - Twitter.com 请求错误

python - 使用 ColumnTransformer/FeatureUnion 后构建完整数据框(特征值 + 名称)的推荐方法是什么?

python - 如何使用不同列中的值和文本注释分组条

python - 水平堆积条形图并为每个部分添加标签