专栏首页生信了R——相关关系热图

R——相关关系热图

Corr

本文介绍了如何画两组变量(特征)的相关关系热图。

准备数据

两组变量的数据可以像下面这样处理,分别保存在两个csv文件中。

> # 导入数据及数据预处理
> setwd("D:/weixin/")
> rows <- read.csv("rows.csv")
> cols <- read.csv("cols.csv")
> str(rows)
'data.frame':   100 obs. of  6 variables:
 $ r1: num  476 482 640 452 308 ...
 $ r2: num  2059 1987 1952 1927 1854 ...
 $ r3: num  513 601 682 497 463 ...
 $ r4: num  2235 2114 2038 1945 1916 ...
 $ r5: num  433 376 525 395 238 ...
 $ r6: num  2028 1943 1802 1775 1748 ...
> str(cols)
'data.frame':   100 obs. of  5 variables:
 $ c1: num  2387 2437 2484 2349 2198 ...
 $ c2: num  540 535 706 509 359 ...
 $ c3: num  472 610 465 473 471 ...
 $ c4: num  74.4 57.3 49.5 51.8 47.6 ...
 $ c5: num  995 915 1038 794 652 ...

简单热图

> # 构建相关关系矩阵
> library(psych)
> data.corr <- corr.test(rows, cols, method="pearson", adjust="fdr")
> data.r <- data.corr$r  # 相关系数
> data.p <- data.corr$p  # p值
> 
> # 画热图
> library(pheatmap)
> pheatmap(data.r, clustering_method="average")

只对列进行聚类

> pheatmap(data.r, clustering_method="average", cluster_rows=F)

将相关系数显示在图上

> data.r.fmt <- matrix(sprintf("%.2f", data.r), nrow=nrow(data.p))  # 只保留小数点后两位
> pheatmap(data.r, clustering_method="average", cluster_rows=F, display_numbers=data.r.fmt)

在图上加上显著性标记

> getSig <- function(dc) {
+   sc <- ''
+   if (dc < 0.01) sc <- '***'
+   else if (dc < 0.05) sc <- '**'
+   else if (dc < 0.1) sc <- '*'
+   sc
+ }
> sig.mat <- matrix(sapply(data.p, getSig), nrow=nrow(data.p))
> str(sig.mat)
 chr [1:6, 1:5] "*" "***" "" "***" "***" "***" "***" "" "***" "**" ...
> pheatmap(data.r, clustering_method="average", cluster_rows=F, display_numbers=sig.mat)

如果想进一步改变图形效果,可以参考pheatmap函数的用法,修改相应的参数。比如:聚类方式改为complete,加上标题等。

> pheatmap(data.r, clustering_method="complete", cluster_rows=F, display_numbers=sig.mat, main="Corr Heatmap")

本文分享自微信公众号 - 生信了(gh_ed36a29a9a9d)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Leetcode【789、1017】

    这道题是在二维平面上有一个人从原点出发,每次移动一个单位(东南西北)到目标坐标 target,平面上还有一些鬼 ghosts 每次也移动一个单位到目标坐标。如果...

    echobingo
  • 谈一谈|如何在word中添加画笔效果

    画笔对于我们日常学习最大的好处就是方便做记号,从而突出文件当中的重点内容。这就极大的方便我们下次浏览文件,一定程度上节省了我们的时间。在手机上我们一般都是用手机...

    算法与编程之美
  • 客户端基本不用的算法系列:RMQ问题 - ST 算法

    今天的算法可能有点难,但是如果我们只需要会使用 RMQ 问题的 ST 算法模板,这种程度就已经可以了!因为 RMQ 问题除了最优解的 ST 算法,剩下的都是高级...

    用户2932962
  • Web|网页制作秘密武器之列表

    列表(list)是指是指在网页中讲相关信息以及条目的方式有序或无序排列而形成的表。常用的列表有无序列表(ul),有序列表(ol)和定义列表(dl)等,接下来,我...

    算法与编程之美
  • 前端|利用CSS制作动画效果

    大家是否觉得上面这个图形需要用到的代码会很复杂?其实不然,我们利用简单的css即可达到此种效果。

    算法与编程之美
  • 首届八大高校联合实验室联席技术峰会分论坛盛况回顾篇(二)

    ? 导语:7月11日下午,首届八大高校联合实验室联席技术峰会通过五场技术分论坛有效地连接腾讯技术团队与高校联合实验室之间更深一步的技术碰撞。论坛技术方向覆盖计...

    腾讯高校合作
  • 【leetcode刷题】T115-二叉树的层次遍历

    https://leetcode-cn.com/problems/binary-tree-level-order-traversal/

    木又AI帮
  • 谈一谈|下载软件的门道你懂吗?

    当我们在下载一些软件时我们经常会遇到这样一个问题—软件的后缀为什么有这么多?该下载哪一个?这些后缀是什么意思?如图:

    算法与编程之美
  • 如何忽略Findbugs的bug

    Ryan-Miao
  • golang 笔记

    微观:多个计划任务,顺序执行。在飞快的切换。轮换使用 cpu 时间轮片。 【假 并行】

    landv

扫码关注云+社区

领取腾讯云代金券