如何用heatmaply绘制散点式聚类热图并获取相关矩阵参数?
使用heatmaply绘制散点型聚类相关系数热图的解决方案
一、直接绘制带聚类的默认散点形式热图
heatmaply支持直接通过node_type = "scatter"参数绘制散点型热图,无需依赖外部函数手动排列相关矩阵。只需配合默认的聚类逻辑(heatmaply默认启用行/列聚类),并通过point_size_mat用相关系数的绝对值控制散点大小即可:
library(heatmaply) # 加载示例数据并计算相关矩阵 data(mtcars) cor_matrix <- cor(mtcars) # 绘制带聚类的散点型相关系数热图 heatmaply(cor_matrix, node_type = "scatter", # 用相关系数绝对值控制散点大小,系数10可按需调整 point_size_mat = abs(cor_matrix) * 10, colors = viridis::viridis(100), showticklabels = c(TRUE, TRUE), main = "散点型聚类相关系数热图")
二、获取heatmaply内部聚类后的矩阵信息
如果需要复用heatmaply生成的聚类后矩阵排列(而非手动处理),可以通过heatmaply_build()函数提取内部聚类结果,再传入point_size_mat等参数:
# 构建heatmaply对象以获取聚类信息 hm_object <- heatmaply_build(cor_matrix) # 提取聚类后的相关矩阵(行/列已按聚类顺序排列) clustered_cor <- hm_object$x$data[[1]]$z # 提取聚类后的行/列标签顺序 row_labels <- hm_object$x$layout$yaxis$ticktext col_labels <- hm_object$x$layout$xaxis$ticktext # 基于聚类后的矩阵生成点大小矩阵并绘图 custom_point_size <- abs(clustered_cor) * 12 # 调整点大小系数 heatmaply(clustered_cor, node_type = "scatter", point_size_mat = custom_point_size, row_labels = row_labels, col_labels = col_labels, colors = viridis::viridis(100), main = "基于heatmaply内部聚类的散点热图")
关键说明
heatmaply_build()返回的对象包含了所有绘图的底层信息,包括聚类后的矩阵、行/列排序、颜色映射等,完全可以替代外部函数的排列逻辑。point_size_mat的缩放系数可根据视觉需求调整,数值越大散点越大,反之则越小。
内容的提问来源于stack exchange,提问作者Shanqiao Chen
相关产品推荐
相关产品推荐

