前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R相关性图如何按比例显示相关系数

R相关性图如何按比例显示相关系数

作者头像
生信交流平台
发布2022-09-21 11:51:17
9280
发布2022-09-21 11:51:17
举报
文章被收录于专栏:用户7627119的专栏

今天偶然从一篇paper里看到了一张R绘制的相关性图,跟以往看到的有些不一样。这张图里面不仅展示了相关系数,并且相关系数显示的大小跟相关系数是成比例的。这样做的好处是,让那些最显著相关的一目了然,而那些不怎么相关的就不那么显眼。这个引起了小编的兴趣,想自己也画一张这样的相关性图。

说干就干,就拿mtcars这套数据来练练手。先来个简单的,由简入繁

代码语言:javascript
复制
#加载corrplot包
library(corrplot)
#计算相关系数矩阵
M <- cor(mtcars)
#绘制对称圆圈图,显示相关系数,大小都为1
corrplot(M, method = "circle",
         number.cex = 1,
         addCoef.col="black"
)

接下来尝试一下根据相关系数的大小来调节显示的字体大小

代码语言:javascript
复制
#根据相关系数的大小M来设置字体的大小
#因为M有正有负,这里用abs取绝对值
corrplot(M, method = "circle",
         number.cex = abs(M),
         addCoef.col="black"
         )

没想到这么容易就实现了,太没有挑战了。

不过文章中的相关性图是三角形的,接下来我们也来画一个三角形的图,胜利在望。

代码语言:javascript
复制
#设置type = "upper"就可以画出上三角
#设置成lower就可以画下三角
corrplot(M, method = "circle",
         type = "upper",
         number.cex = abs(M),
         addCoef.col="black"
)

高兴太早,翻车了!只画一半的时候,不能用完整的相关系数矩阵M来作为字体的大小,这样设置不对。

推测如果图像只画一半,相关系数应该也只用一半。那么这个相关系数的顺序如何确定呢?下面来做个测试

代码语言:javascript
复制
#一共有66个圆圈,先全部把大小设置成0.1,几乎看不到
#然后把前三个的大小改大一些,看看那几个系数的大小有变化,
#从而确定顺序
size=rep(0.1,66)
size[1]=1
size[2]=0.5
size[3]=1
corrplot(M, method = "circle",
         type = "upper",
         number.cex = size,
         addCoef.col="black"
)

被我发现了,是按列来排布的!如箭头所示的方向和顺序

接下来就是最终章了

代码语言:javascript
复制
#申明一个空变量来装size的大小
size=c()
#循环按列来获取相关系数,第一列取前一个,第二列取前两个
#依次类推
for(i in 1:ncol(M)){
  size=c(size,M[1:i,i])
}
size=as.numeric(size)

corrplot(M, method = "circle",
         type = "upper",
         number.cex = abs(size),
         addCoef.col="black"
)

大功告成了!!!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信交流平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档