获取更多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包画相关性图详解相关推荐

  1. python画双折线图详解_Python教程:matplotlib 绘制双Y轴曲线图

    #-*- coding: utf-8 -*- #调用包 importpandas as pdimportnumpy as npimportmatplotlib.pyplot as plt#读取文件 i ...

  2. python画折线图详解-python如何画折线图

    python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...

  3. python画折线图详解-利用python画出折线图

    本文实例为大家分享了python画折线图的具体代码,供大家参考,具体内容如下 # encoding=utf-8 import matplotlib.pyplot as plt from pylab i ...

  4. python画折线图详解-python绘制简单折线图代码示例

    1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...

  5. corrplot包绘制相关性图

    #导入数据 data = read.table("cor.txt",header=T,sep="\t") data1<-data[,-1] #输入数据的格 ...

  6. 雷达图pandas——画雷达图详解

    数据读取后的样式 result = pd.read_csv('books.csv', sep=',') 数据处理 result=result.set_index('Unnamed: 0') 3.分别取 ...

  7. python画折线图详解-Python数据可视化(一) 绘制折线图和散点图

    数据可视化示例 对数据可视化的浅认知 数据可视化是任何数据科学或机器学习的重要组成部分.可视化能将数据以更加直观的方式展现出来,使数据更加客观.更具说服力.同时,也易于发现隐藏在数据中的规律和意义.尤 ...

  8. python画折线图详解-手把手教你Python yLab的绘制折线图的画法

    Python的可视化工具有很多,数不胜数,各有优劣.本文就对其中的pylab进行介绍.之所以介绍这一款,是因为它和Matlab的强烈相似度,如果你使用过Matlab,那么相信pylab你也会很快上手. ...

  9. python画折线图详解-利用python画折线图

    # encoding=utf-8 import matplotlib.pyplot as plt from pylab import * #支持中文 mpl.rcParams["font.s ...

最新文章

  1. Nature:拟南芥微生物组功能研究2细菌基因组测序和分析
  2. ajax从页面向action传递json 公司--》
  3. 【Paper】2017_水下潜航器编队海洋勘测的协调控制方法研究
  4. solidworks钣金插件_SolidWorks钣金设计实例:等径弯管
  5. 团队作业6——展示博客(Alpha版本)
  6. Vue3的响应式原理解析
  7. js动态加载css文件和js文件的方法
  8. 关于禁止ViewPager预加载问题【转】
  9. android 手机头提示消息,正确的手机头部声明(android,iphone)
  10. Win10 Terminal 背景图片设置
  11. 【JZOJ5424】【NOIP2017提高A组集训10.25】凤凰院凶真
  12. C#使用Google翻译实现在线翻译
  13. html个人所得税计算器,上海个人所得税计算器_个税计算器_税后工资计算器
  14. 中国剩余定理和EXCRT
  15. 文档格式转换工具对比
  16. php7 phalcon,GitHub - shyn0121/cphalcon7: Phalcon7 - Web framework for PHP7.x 高性能PHP7框架
  17. anaconda conda 切换为国内源 、windows 和 Linux配置方法、 添加清华源——【一文读懂】
  18. 511遇见易语言磁盘操作取磁盘空间和驱动器列表
  19. 【Windows】Win10设置开机启动项
  20. vc 屏幕上绘制透明矩形框(可设置颜色,宽度)

热门文章

  1. 河北科技大学计算机属于哪个学院,河北科技大学2020年河北省本科专业录取分数统计,计算机专业最高...
  2. TUP第29期:王淮、龚世海谈如何打造优秀的技术团队
  3. 信息安全类产品成为金融展关注热点
  4. Oracle在Pl/sql中的存储过程----zhoudianzhang
  5. 我是如何用58空手套10万的!
  6. NPM酷库:globby,增强版的glob
  7. 以金和协同办公OA软件修炼企业内功
  8. 游戏美术设计从零学起难吗?要多久能学会?
  9. Linux高级命令和Shell编程
  10. python项目练习--链家房价分析