corrplot包画相关性图详解
获取更多R语言知识,请关注公众号:医学和生信笔记
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。
文章目录
- 安装
- 图形种类
- 重排顺序
- 加方框
- 更改颜色条、图例、文本标签
- 可视化非相关系数矩阵、NA值、数学符号
- 可视化p值和可信区间
相关性矩阵的可视化非常多,基础绘图也有很多函数可以做。不过最好用的一定是 corrplot
包。
这个包也是国产R包,以为大佬写的,非常值得学习。
corrplot
非常容易使用,并在可视化方法、图形布局、颜色、图例、文本标签等方面提供了丰富的绘图参数。它还提供了p值和置信区间,以帮助用户确定相关的统计显著性。
corrplot
一共提供了大约50个参数,但是常用的也就10个左右。非常简单易用哦。
安装
# 2选1
install.packages('corrplot')devtools::install_github('taiyun/corrplot', build_vignettes = TRUE)
图形种类
library(corrplot)
## corrplot 0.92 loadedM <- cor(mtcars)
M
## mpg cyl disp hp drat wt
## mpg 1.0000000 -0.8521620 -0.8475514 -0.7761684 0.68117191 -0.8676594
## cyl -0.8521620 1.0000000 0.9020329 0.8324475 -0.69993811 0.7824958
## disp -0.8475514 0.9020329 1.0000000 0.7909486 -0.71021393 0.8879799
## hp -0.7761684 0.8324475 0.7909486 1.0000000 -0.44875912 0.6587479
## drat 0.6811719 -0.6999381 -0.7102139 -0.4487591 1.00000000 -0.7124406
## wt -0.8676594 0.7824958 0.8879799 0.6587479 -0.71244065 1.0000000
## qsec 0.4186840 -0.5912421 -0.4336979 -0.7082234 0.09120476 -0.1747159
## vs 0.6640389 -0.8108118 -0.7104159 -0.7230967 0.44027846 -0.5549157
## am 0.5998324 -0.5226070 -0.5912270 -0.2432043 0.71271113 -0.6924953
## gear 0.4802848 -0.4926866 -0.5555692 -0.1257043 0.69961013 -0.5832870
## carb -0.5509251 0.5269883 0.3949769 0.7498125 -0.09078980 0.4276059
## qsec vs am gear carb
## mpg 0.41868403 0.6640389 0.59983243 0.4802848 -0.55092507
## cyl -0.59124207 -0.8108118 -0.52260705 -0.4926866 0.52698829
## disp -0.43369788 -0.7104159 -0.59122704 -0.5555692 0.39497686
## hp -0.70822339 -0.7230967 -0.24320426 -0.1257043 0.74981247
## drat 0.09120476 0.4402785 0.71271113 0.6996101 -0.09078980
## wt -0.17471588 -0.5549157 -0.69249526 -0.5832870 0.42760594
## qsec 1.00000000 0.7445354 -0.22986086 -0.2126822 -0.65624923
## vs 0.74453544 1.0000000 0.16834512 0.2060233 -0.56960714
## am -0.22986086 0.1683451 1.00000000 0.7940588 0.05753435
## gear -0.21268223 0.2060233 0.79405876 1.0000000 0.27407284
## carb -0.65624923 -0.5696071 0.05753435 0.2740728 1.00000000
默认圆形,带红色标签的。
corrplot(M)
图形展示方法参数:method
,提供以下选项:circle
, square
, ellipse
, number
, shade
, color
, pie
看看不同的类型:
corrplot(M,method = "number")
corrplot(M, method = 'color')
corrplot(M, method = 'shade')
corrplot(M, method = 'square', order = 'FPC', type = 'lower', diag = FALSE)
corrplot(M, method = 'ellipse', order = 'AOE', type = 'upper')
使用这个函数可以上下使用不同的图形类型。
corrplot.mixed(M, order = 'AOE')
可以自由组合不用的类型:
corrplot.mixed(M, lower = 'shade', upper = 'pie', order = 'hclust')
重排顺序
type
参数控制是否显示上下三角。3个选项:full, lower, upper。
diagonal
控制对角线是否显示:TRUE或者FALSE。
order
参数控制顺序,提供5个选项:original(默认),AOE, FPC, hclust, alphabet。
具体每种方法的原理大家有兴趣的可以自己学习。
如果选hclust
,还可以调整hclust.method()
函数,有以下选项:ward, ward.D, ward.D2, single, complete, average, mcquitty, median,centroid。
也可以通过corrMatOrder()
函数手动安排顺序。
corrplot(M, order = 'hclust', addrect = 2 #增加方框)
corrplot(M, method = 'square', diag = FALSE, order = 'hclust',tl.pos = 'd')
corrplot(M, method = "square",type = "lower",order = 'hclust',rect.col = 'blue', rect.lwd = 3, # 控制方框外观tl.pos = 'd',tl.col = "black",cl.pos = "b")
加方框
corrplot(M,addrect = 3, # 增加方框rect.col = 'blue', rect.lwd = 3# 控制方框外观)
还可以通过管道符加边框:
corrplot(M) |> corrRect(c(1, 3, 6))
也可以用名字限定方框添加位置:
corrplot(M, order = 'hclust') |>corrRect(name = c('carb', 'qsec', 'mpg')) # 名字和边框的位置大家观察下
还可以用名字组成位置,在你喜欢的位置添加方框:
分别对应方框的上、左、下、右四个位置。
r = rbind(c('wt', 'hp', 'cyl', 'disp'),c('drat', 'mpg', 'gear', 'gear'))
corrplot(M, order = 'hclust') |> corrRect(namesMat = r)
更改颜色条、图例、文本标签
使用COL1()
产生连续型颜色,使用COL2()
产生离散型颜色。COL1()
适用于只有正值或只有负值的矩阵,COL2()
适合于既有正数又有负数的矩阵。
col
参数调整颜色,col.lim
参数使颜色均匀分布,is.corr
参数使用TRUE或者FALSE控制是否是相关矩阵,默认是TRUE。
下面是可供选择的颜色条:
cl.pos
控制颜色条(color legend)位置,提供以下选项:FALSE,r(right),b(bottom),n(不显示)。cl.ratio
控制颜色条的宽度,建议是0.1~0.2。
还有很多参数可以控制颜色条的外观,都是以cl
开头的,大家可以通过?corrplot
查看具体参数。
tl.pos
:标签的位置,必须是以下中的一种:lt, ld, td, d,n。
lt:type = full
的情况下的默认选项,表示left and top。
ld:type = lower
的情况下的默认选项,表示left and diagonal。
td:type = upper
的情况下的默认选项,表示top and diagonal。
l:left
d:diagonal
n:不添加标签
tl.cex
:标签文本字体大小tl.srt
:旋转角度
corrplot(M, order = 'AOE', col = COL2('RdBu', 10))
corrplot(M, order = 'AOE', addCoef.col = 'black', # 性关系数文字颜色tl.pos = 'd',cl.pos = 'n', col = COL2('PiYG'))
corrplot(M, method = 'square', order = 'AOE', addCoef.col = 'black', tl.pos = 'd', cl.pos = 'n', col = COL2('BrBG'))
标签旋转45°:
corrplot(M, type = 'lower', order = 'hclust', tl.col = 'black', cl.ratio = 0.2, tl.srt = 45, col = COL2('PuOr', 10))
移除图例,增加背景色,看起来就是一个棋盘:
corrplot(M, order = 'AOE', cl.pos = 'n', tl.pos = 'n',col = c('white', 'black'), bg = 'gold2')
可视化非相关系数矩阵、NA值、数学符号
N1 = matrix(runif(80, 20, 26), 8)
dim(N1)
## [1] 8 10corrplot(N1, is.corr = FALSE, col.lim = c(20, 30), method = 'color', tl.pos = 'n',col = COL1('YlGn'), cl.pos = 'b', addgrid.col = 'red', # 边框色addCoef.col = 'grey50', # 相关系数颜色number.cex = 0.8 # 相关系数字体大小)
有正值也有负值:
N2 = matrix(runif(80, -15, 10), 8)
corrplot(N2, is.corr = FALSE, method = 'color', col.lim = c(-15, 10), tl.pos = 'n',col = COL2('PiYG'), cl.pos = 'b', addCoef.col = 'grey50')
标签为NA和数学公式,NA默认会显示为?
,可以使用na.label
参数。
M2 = M
diag(M2) = NA
colnames(M2) = rep(c('$alpha+beta', '$alpha[0]', '$alpha[beta]'),c(4, 4, 3))
rownames(M2) = rep(c('$Sigma[i]^n', '$sigma', '$alpha[0]^100', '$alpha[beta]'),c(2, 4, 2, 3))
corrplot(10*abs(M2), is.corr = FALSE, col.lim = c(0, 10), tl.cex = 1.5)
M2 = M
diag(M2) = NA
colnames(M2) = rep(c('$alpha+beta', '$alpha[0]', '$alpha[beta]'), c(4, 4, 3))
rownames(M2) = rep(c('$Sigma[i]^n', '$sigma', '$alpha[0]^100', '$alpha[beta]'), c(2, 4, 2, 3))
corrplot(10*abs(M2), is.corr = FALSE, col.lim = c(0, 10), tl.cex = 1.5, tl.col = "black", na.label = "ab")
可视化p值和可信区间
在可视化相关系数矩阵时,也可以同时展示p值信息和可信区间信息。
testRes = cor.mtest(mtcars, conf.level = 0.95)
testRes
## $p
## mpg cyl disp hp drat
## mpg 0.000000e+00 6.112687e-10 9.380327e-10 1.787835e-07 1.776240e-05
## cyl 6.112687e-10 0.000000e+00 1.802838e-12 3.477861e-09 8.244636e-06
## disp 9.380327e-10 1.802838e-12 0.000000e+00 7.142679e-08 5.282022e-06
## hp 1.787835e-07 3.477861e-09 7.142679e-08 0.000000e+00 9.988772e-03
## drat 1.776240e-05 8.244636e-06 5.282022e-06 9.988772e-03 0.000000e+00
## wt 1.293959e-10 1.217567e-07 1.222320e-11 4.145827e-05 4.784260e-06
## qsec 1.708199e-02 3.660533e-04 1.314404e-02 5.766253e-06 6.195826e-01
## vs 3.415937e-05 1.843018e-08 5.235012e-06 2.940896e-06 1.167553e-02
## am 2.850207e-04 2.151207e-03 3.662114e-04 1.798309e-01 4.726790e-06
## gear 5.400948e-03 4.173297e-03 9.635921e-04 4.930119e-01 8.360110e-06
## carb 1.084446e-03 1.942340e-03 2.526789e-02 7.827810e-07 6.211834e-01
## wt qsec vs am gear
## mpg 1.293959e-10 1.708199e-02 3.415937e-05 2.850207e-04 5.400948e-03
## cyl 1.217567e-07 3.660533e-04 1.843018e-08 2.151207e-03 4.173297e-03
## disp 1.222320e-11 1.314404e-02 5.235012e-06 3.662114e-04 9.635921e-04
## hp 4.145827e-05 5.766253e-06 2.940896e-06 1.798309e-01 4.930119e-01
## drat 4.784260e-06 6.195826e-01 1.167553e-02 4.726790e-06 8.360110e-06
## wt 0.000000e+00 3.388683e-01 9.798492e-04 1.125440e-05 4.586601e-04
## qsec 3.388683e-01 0.000000e+00 1.029669e-06 2.056621e-01 2.425344e-01
## vs 9.798492e-04 1.029669e-06 0.000000e+00 3.570439e-01 2.579439e-01
## am 1.125440e-05 2.056621e-01 3.570439e-01 0.000000e+00 5.834043e-08
## gear 4.586601e-04 2.425344e-01 2.579439e-01 5.834043e-08 0.000000e+00
## carb 1.463861e-02 4.536949e-05 6.670496e-04 7.544526e-01 1.290291e-01
## carb
## mpg 1.084446e-03
## cyl 1.942340e-03
## disp 2.526789e-02
## hp 7.827810e-07
## drat 6.211834e-01
## wt 1.463861e-02
## qsec 4.536949e-05
## vs 6.670496e-04
## am 7.544526e-01
## gear 1.290291e-01
## carb 0.000000e+00
##
## $lowCI
## mpg cyl disp hp drat wt
## mpg 1.00000000 -0.9257694 -0.92335937 -0.8852686 0.4360484 -0.93382641
## cyl -0.92576936 1.0000000 0.80724418 0.6816016 -0.8429083 0.59657947
## disp -0.92335937 0.8072442 1.00000000 0.6106794 -0.8487237 0.78115863
## hp -0.88526861 0.6816016 0.61067938 1.0000000 -0.6895522 0.40251134
## drat 0.43604838 -0.8429083 -0.84872374 -0.6895522 1.0000000 -0.84997951
## wt -0.93382641 0.5965795 0.78115863 0.4025113 -0.8499795 1.00000000
## qsec 0.08195487 -0.7792781 -0.67961513 -0.8475998 -0.2659470 -0.49335358
## vs 0.41036301 -0.9039393 -0.84883771 -0.8559675 0.1081948 -0.75711174
## am 0.31755830 -0.7369979 -0.77926901 -0.5456270 0.4843991 -0.83867523
## gear 0.15806177 -0.7180260 -0.75751468 -0.4544774 0.4641440 -0.77446381
## carb -0.75464796 0.2184331 0.05367539 0.5431200 -0.4259976 0.09273981
## qsec vs am gear carb
## mpg 0.08195487 0.4103630 0.3175583 0.15806177 -0.75464796
## cyl -0.77927809 -0.9039393 -0.7369979 -0.71802597 0.21843307
## disp -0.67961513 -0.8488377 -0.7792690 -0.75751468 0.05367539
## hp -0.84759984 -0.8559675 -0.5456270 -0.45447743 0.54311998
## drat -0.26594700 0.1081948 0.4843991 0.46414402 -0.42599760
## wt -0.49335358 -0.7571117 -0.8386752 -0.77446381 0.09273981
## qsec 1.00000000 0.5346428 -0.5356240 -0.52261830 -0.81780480
## vs 0.53464277 1.0000000 -0.1915957 -0.15371324 -0.76613289
## am -0.53562398 -0.1915957 1.0000000 0.61589632 -0.29712041
## gear -0.52261830 -0.1537132 0.6158963 1.00000000 -0.08250603
## carb -0.81780480 -0.7661329 -0.2971204 -0.08250603 1.00000000
##
## $uppCI
## mpg cyl disp hp drat wt
## mpg 1.0000000 -0.7163171 -0.7081376 -0.5860994 0.8322010 -0.7440872
## cyl -0.7163171 1.0000000 0.9514607 0.9154223 -0.4646481 0.8887052
## disp -0.7081376 0.9514607 1.0000000 0.8932775 -0.4805193 0.9442902
## hp -0.5860994 0.9154223 0.8932775 1.0000000 -0.1186280 0.8192573
## drat 0.8322010 -0.4646481 -0.4805193 -0.1186280 1.0000000 -0.4839784
## wt -0.7440872 0.8887052 0.9442902 0.8192573 -0.4839784 1.0000000
## qsec 0.6696186 -0.3055388 -0.1001493 -0.4774331 0.4263400 0.1852649
## vs 0.8223262 -0.6442689 -0.4808327 -0.5006318 0.6839680 -0.2556982
## am 0.7844520 -0.2126675 -0.3055178 0.1152646 0.8501319 -0.4532461
## gear 0.7100628 -0.1738615 -0.2565810 0.2332119 0.8427222 -0.2944887
## carb -0.2503183 0.7397479 0.6536467 0.8708249 0.2663358 0.6755700
## qsec vs am gear carb
## mpg 0.6696186 0.8223262 0.7844520 0.7100628 -0.2503183
## cyl -0.3055388 -0.6442689 -0.2126675 -0.1738615 0.7397479
## disp -0.1001493 -0.4808327 -0.3055178 -0.2565810 0.6536467
## hp -0.4774331 -0.5006318 0.1152646 0.2332119 0.8708249
## drat 0.4263400 0.6839680 0.8501319 0.8427222 0.2663358
## wt 0.1852649 -0.2556982 -0.4532461 -0.2944887 0.6755700
## qsec 1.0000000 0.8679076 0.1291876 0.1469065 -0.3988165
## vs 0.8679076 1.0000000 0.4883712 0.5175379 -0.2756654
## am 0.1291876 0.4883712 1.0000000 0.8949546 0.3982389
## gear 0.1469065 0.5175379 0.8949546 1.0000000 0.5684422
## carb -0.3988165 -0.2756654 0.3982389 0.5684422 1.0000000corrplot(M, p.mat = testRes$p, sig.level = 0.10, # 显著性水平,默认0.05order = 'hclust', addrect = 2)
不显著的留空,显著的标注相关系数:
通过insig
参数控制,有以下选项:pch(默认),p-value, blank, n, label_sig。
corrplot(M, p.mat = testRes$p, # p值矩阵method = 'circle', type = 'lower', insig='blank', # 不显著留空addCoef.col ='black', number.cex = 0.8, order = 'AOE', diag=FALSE)
不显著的显示p值:
corrplot(M, p.mat = testRes$p, insig = 'p-value')
所有的都显示p值:
corrplot(M, p.mat = testRes$p, insig = 'p-value', sig.level = -1)
显著的标星号:
corrplot(M, p.mat = testRes$p, method = 'color', diag = FALSE, type = 'upper', sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.9, insig = 'label_sig', pch.col = 'grey20', order = 'AOE')
可视化可信区间:
corrplot(M, lowCI = testRes$lowCI, uppCI = testRes$uppCI, order = 'hclust', tl.pos = 'd', rect.col = 'navy', plotCI = 'rect', # 画可信区间,或者ncl.pos = 'n')
corrplot(M, p.mat = testRes$p, lowCI = testRes$lowCI, uppCI = testRes$uppCI,order = 'hclust',addrect = 3, rect.col = 'navy', plotCI = 'rect', cl.pos = 'n')
OK,以上就是corrplot
包的全部内容,基本上能够满足大家的日常需求,还有更多细节需要调整的话,可以使用?corrplot
进行探索哦!
这个包是无数个可视化相关系数矩阵的包的鼻祖,很多包都是以这个包为基础的,已经足够好用了。
获取更多R语言知识,请关注公众号:医学和生信笔记
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。
corrplot包画相关性图详解相关推荐
- python画双折线图详解_Python教程:matplotlib 绘制双Y轴曲线图
#-*- coding: utf-8 -*- #调用包 importpandas as pdimportnumpy as npimportmatplotlib.pyplot as plt#读取文件 i ...
- python画折线图详解-python如何画折线图
python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...
- python画折线图详解-利用python画出折线图
本文实例为大家分享了python画折线图的具体代码,供大家参考,具体内容如下 # encoding=utf-8 import matplotlib.pyplot as plt from pylab i ...
- python画折线图详解-python绘制简单折线图代码示例
1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...
- corrplot包绘制相关性图
#导入数据 data = read.table("cor.txt",header=T,sep="\t") data1<-data[,-1] #输入数据的格 ...
- 雷达图pandas——画雷达图详解
数据读取后的样式 result = pd.read_csv('books.csv', sep=',') 数据处理 result=result.set_index('Unnamed: 0') 3.分别取 ...
- python画折线图详解-Python数据可视化(一) 绘制折线图和散点图
数据可视化示例 对数据可视化的浅认知 数据可视化是任何数据科学或机器学习的重要组成部分.可视化能将数据以更加直观的方式展现出来,使数据更加客观.更具说服力.同时,也易于发现隐藏在数据中的规律和意义.尤 ...
- python画折线图详解-手把手教你Python yLab的绘制折线图的画法
Python的可视化工具有很多,数不胜数,各有优劣.本文就对其中的pylab进行介绍.之所以介绍这一款,是因为它和Matlab的强烈相似度,如果你使用过Matlab,那么相信pylab你也会很快上手. ...
- python画折线图详解-利用python画折线图
# encoding=utf-8 import matplotlib.pyplot as plt from pylab import * #支持中文 mpl.rcParams["font.s ...
最新文章
- Nature:拟南芥微生物组功能研究2细菌基因组测序和分析
- ajax从页面向action传递json 公司--》
- 【Paper】2017_水下潜航器编队海洋勘测的协调控制方法研究
- solidworks钣金插件_SolidWorks钣金设计实例:等径弯管
- 团队作业6——展示博客(Alpha版本)
- Vue3的响应式原理解析
- js动态加载css文件和js文件的方法
- 关于禁止ViewPager预加载问题【转】
- android 手机头提示消息,正确的手机头部声明(android,iphone)
- Win10 Terminal 背景图片设置
- 【JZOJ5424】【NOIP2017提高A组集训10.25】凤凰院凶真
- C#使用Google翻译实现在线翻译
- html个人所得税计算器,上海个人所得税计算器_个税计算器_税后工资计算器
- 中国剩余定理和EXCRT
- 文档格式转换工具对比
- php7 phalcon,GitHub - shyn0121/cphalcon7: Phalcon7 - Web framework for PHP7.x 高性能PHP7框架
- anaconda conda 切换为国内源 、windows 和 Linux配置方法、 添加清华源——【一文读懂】
- 511遇见易语言磁盘操作取磁盘空间和驱动器列表
- 【Windows】Win10设置开机启动项
- vc 屏幕上绘制透明矩形框(可设置颜色,宽度)