繁体   English   中英

按 R 中的因子分割的数据帧的相关热图

[英]Correlation heatmap for a data frame split by a factor in R

我想在 R 中生成一个热图/相关图。我探索了各种包,例如corrplotggcorrplotpheatmap ,但我发现很难到达我想要的地方。

例如,使用 mtcars,我想生成如下所示的热图。 具体来说:

  1. 使用 Spearman 相关性仅将 mpg 与 disp、hp、drat 和 wt 进行比较。
  2. 分别对cyl=4cyl=6cyl=8进行这些比较。
  3. 计算斯皮尔曼 p 值。
  4. 绘制热图,其中平铺颜色代表 Spearman 相关系数 (r),p 值印在每个平铺上。

与此类似的期望结果: 在此处输入图片说明

我将不胜感激。 谢谢你。

您可以使用psych包和图形包(例如ggplot2pheatmap 首先定义一个自定义函数来获取 p 值,然后使用by应用该函数。

library(psych)
myfun <- function(df) corr.test(df[, 1], df[, 3:6], method = "spearman", adjust = 
"none")$p

dfs <- by(mtcars, mtcars$cyl, myfun)
mat <- do.call(rbind, dfs)
rownames(mat) <- c("cyl = 4", "cyl = 6", "cyl = 8")

library(pheatmap)
pheatmap(mat, 
     cluster_rows = F, 
     cluster_cols = F, 
     display_numbers = T, 
     show_rownames = T,
     show_colnames = T,
     number_format = "%.4f")

热图

我没有尝试完全复制上面的热图,但您可以阅读?pheatmap以了解其所有选项。

附注:如果任何人都可以做到这一点,在适当的功能purrr管道进入ggplot2的热图,你有我给予好评。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM