获取更多R语言知识,请关注公众号:医学和生信笔记
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。
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 loaded
M <- 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')
N1 = matrix(runif(80, 20, 26), 8)
dim(N1)
## [1] 8 10
corrplot(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值信息和可信区间信息。
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.0000000
corrplot(M, p.mat = testRes$p, sig.level = 0.10, # 显著性水平,默认0.05
order = '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', # 画可信区间,或者n
cl.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分析、网络药理学、临床预测模型、机器学习、生物信息学等。