在热图/相关图(R)中指定哪些相关

时间:2019-07-19 04:12:13

标签: r heatmap correlation

我想在R中生成一个热图/相关图。我探索了各种软件包,例如corrplotggcorrplotpheatmap,但是我发现很难找到它我想要。

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

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

所需的结果与此类似: enter image description here

我将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用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")

heatmap

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

旁注:如果有人可以通过将purrr中的适当功能传递到热图的ggplot2中来完成此操作,则您表示赞成。