seaborn.
clustermap
(data, *, pivot_kws=None, method='average', metric='euclidean', z_score=None, standard_scale=None, figsize=(10, 10), cbar_kws=None, row_cluster=True, col_cluster=True, row_linkage=None, col_linkage=None, row_colors=None, col_colors=None, mask=None, dendrogram_ratio=0.2, colors_ratio=0.03, cbar_pos=(0.02, 0.8, 0.05, 0.18), tree_kws=None, **kwargs)¶将矩阵数据集绘制为分层聚集的热图。
此函数要求scipy可用。
用于聚类的矩形数据。不能包含NAs。
如果 data
是一个整洁的数据框,可以提供关键字参数为pivot创建一个矩形的数据框。
用于计算簇的链接方法。看到了吗 scipy.cluster.hierarchy.linkage()
有关详细信息的文档。
用于数据的距离度量。看到了吗 scipy.spatial.distance.pdist()
有关更多选项的文档。要对行和列使用不同的度量(或方法),您可以自己构造每个链接矩阵,并将它们作为 {{row,col}}_linkage
.
0(行)或1(列)。是否计算行或列的z分数。Z得分是:Z=(x-平均值)/std,因此每行(列)中的值将得到行(列)的平均值减去,然后除以行(列)的标准差。这确保每一行(列)的平均值为0,方差为1。
0(行)或1(列)。是否标准化该维度,即每行或每列减去最小值,再除以最大值。
图形的总体大小。
要传递给的关键字参数 cbar_kws
在里面 heatmap()
,例如,向颜色栏添加标签。
If True
, cluster the {rows, columns}.
numpy.ndarray
可选努比·恩达雷,可选行或列的预计算链接矩阵。看到了吗 scipy.cluster.hierarchy.linkage()
对于特定格式。
要为行或列添加标签的颜色列表。用于评估组中的样本是否聚集在一起。可以使用嵌套列表或数据框进行多个颜色级别的标签。如果作为 pandas.DataFrame
或 pandas.Series
,颜色的标签从DataFrames列名或序列名称中提取。数据帧/序列颜色也通过其索引与数据匹配,确保以正确的顺序绘制颜色。
如果传递,数据将不会显示在 mask
这是真的。缺少值的单元格将被自动屏蔽。仅用于可视化,不用于计算。
用于两个边缘元素的图形大小的比例。如果给定一对,则它们对应于(行、列)比率。
图中颜色条轴的位置。设置为 None
将禁用颜色栏。
的参数 matplotlib.collections.LineCollection
用于绘制树状图树的线条。
所有其他关键字参数都传递给 heatmap()
.
ClusterGrid
A ClusterGrid
实例。
参见
heatmap
将矩形数据绘制为颜色编码矩阵。
笔记
返回的对象具有 savefig
方法,如果要保存地物对象而不剪裁树状图,则应使用该方法。
要访问重新排序的行索引,请使用: clustergrid.dendrogram_row.reordered_ind
列索引,使用: clustergrid.dendrogram_col.reordered_ind
实例
绘制聚集热图:
>>> import seaborn as sns; sns.set_theme(color_codes=True)
>>> iris = sns.load_dataset("iris")
>>> species = iris.pop("species")
>>> g = sns.clustermap(iris)
更改图形的大小和布局:
>>> g = sns.clustermap(iris,
... figsize=(7, 5),
... row_cluster=False,
... dendrogram_ratio=(.1, .2),
... cbar_pos=(0, .2, .03, .4))
添加彩色标签以识别观察结果:
>>> lut = dict(zip(species.unique(), "rbg"))
>>> row_colors = species.map(lut)
>>> g = sns.clustermap(iris, row_colors=row_colors)
使用不同的颜色映射并调整颜色范围的限制:
>>> g = sns.clustermap(iris, cmap="mako", vmin=0, vmax=10)
使用不同的相似性度量:
>>> g = sns.clustermap(iris, metric="correlation")
使用不同的聚类方法:
>>> g = sns.clustermap(iris, method="single")
标准化列中的数据:
>>> g = sns.clustermap(iris, standard_scale=1)
规范化行中的数据:
>>> g = sns.clustermap(iris, z_score=0, cmap="vlag")