corrplot包绘制相关性图,简单又好看!

相关性分析作为一种强大的工具,能够帮助我们量化变量间的关联程度。

相关性分析作为一种强大的工具,能够帮助我们量化变量间的关联程度。R 语言中可以做相关性矩阵可视化的包有很多,小编最喜欢用的还是corrplot 这个包。


attachments-2025-04-YAVgfIWu67ff51b5031d2.png

corrplot包非常容易使用,并在可视化方法、图形布局、颜色、图例、文本标签等方面提供了丰富的绘图参数。它还提供了p值和置信区间,以帮助用户确定相关的统计显著性。下面我们以转录组表达量数据为例,使用corrplot包绘制样品间的相关性图,绘图脚本如下:

1.加载需要的包

# 1.安装CRAN来源常用包
#设置镜像,
local({r <- getOption("repos")
r["CRAN"] <- "http://mirrors.tuna.tsinghua.edu.cn/CRAN/"
options(repos=r)})
# 依赖包列表:自动加载并安装
package_list <- c("dplyr","corrplot","RColorBrewer","devtools")
# 判断R包加载是否成功来决定是否安装后再加载
for(p in package_list){
  if(!suppressWarnings(suppressMessages(require(p, character.only = TRUE, quietly = TRUE, warn.conflicts = FALSE)))){
    install.packages(p,  warn.conflicts = FALSE)
    suppressWarnings(suppressMessages(library(p, character.only = TRUE, quietly = TRUE, warn.conflicts = FALSE)))
  }
}

2.读入数据

#设置工作路径
setwd("~/work/03.deg")
#读入数据
data<-read.table("fpkm.xls", header=TRUE,sep = "\t",check.names=FALSE,row.names=1)
head(data)


基因表达量数据格式如下:

ID      A1-1    A1-2    A1-3    B1-1    B1-2    B1-3    A2-1    A2-2    A2-3    B2-1    B2-2    B2-3
FtPinG0000001800.01     15.1995160901025        16.441577150186 17.2867772136153        20.0123886434312        20.5339961826528        21.030851469837 18.8867556381351       19.9059977192796        20.2262281764502        40.959707297525 36.2627040170818        36.2719103917479
FtPinG0000002000.01     8.97531375191129        9.11978258738736        9.85238719797644        8.84397160213807        9.66296609611642        9.56993910901853      10.7337560132642 10.6955187445875        10.174602368444 18.726301862827 19.744963523371 17.3371843121483
FtPinG0000002300.01     0.10096169501517        0.23839548136093        0.0854956827825154      0.37158122584763        0.199269668964403       0.295200470823108     0.0377515062095995       0.17911701881884        0.129515327078851       0.272975348387301       0.240196848553491       0.213872775624117
FtPinG0000002800.01     0.0691371370886746      0.16324984513874        0.268336893105438       0.0553159900786594      0.200672122973102       0.0594556165929241    0.14541579072095 0.2259467268409 0.155207954001583       0.116831029830459       0.0195813566486246      0.0228839131230015
FtPinG0000003000.01     488.861014449897        550.333645893939        442.444481899145        75.5380031354494        64.4440513891441        57.6249425862915      254.156489961737 256.297317496125        251.784160910779        32.0265556912271        32.5182736365053        35.4868859947427
FtPinG0000003200.01     22.6122074811821        22.9234651150848        22.1955511912947        13.1976268830233        13.9488878286769        14.5630548222237      26.260610275161  24.579965406508 24.5554860909515        19.374652724498 17.9159765083164        18.1895860061232
FtPinG0000011200.01     2.28786192141911        2.17588880489401        2.48900975204522        3.83895975408766        4.85130647216345        3.57972862781851      1.76738814933271 1.94341357417698        2.24194284443757        5.66495659137527        4.53585576331562        5.84777970567225
FtPinG0000011400.01     0       0       0       0       0       0       0       0       0       0       0       0
FtPinG0000011500.01     17.9584332209316        17.800309707057 19.4348761621419        12.1970372253972        12.2532093298866        11.3234221949391        18.5570812100419       19.6154291160033        18.4384954308382        13.8995891670914        14.5566151353016        13.1524676396182

3.数据处理

#使用spearman方法计算相关性
corr_matrix <- cor(data,method="spearman")
head(corr_matrix)

4.绘图

my_col<-colorRampPalette(c("yellow","orange","red"))
corrplot(corr_matrix,
         type = "upper",
         order = "AOE",      # 矩阵的排序方法,如 'original'、'AOE'、'hclust' 等
         is.corr = FALSE,    # 逻辑值,指示输入矩阵是否为相关性矩阵。
         col = my_col(100),  # 颜色向量,用于图形的颜色分布。
         col.lim = c(0.8,1), # 颜色分配的限制区间(相关性值区间)。
         tl.col = "black",   
         addCoef.col = "black",  # 添加相关系数
         number.cex = 0.7)       # 数字字体大小

结果如下图:


attachments-2025-04-ErK2YNDz67ff51cb7b251.png

图形类型默认为圆形,将其改为矩形的:

corrplot(corr_matrix,method = 'square',
         type = "upper",
         order = "AOE",      # 矩阵的排序方法,如 'original'、'AOE'、'hclust' 等
         is.corr = FALSE,    # 逻辑值,指示输入矩阵是否为相关性矩阵。
         col = my_col(100),  # 颜色向量,用于图形的颜色分布。
         col.lim = c(0.8,1), # 颜色分配的限制区间(相关性值区间)。
         tl.col = "black",   
         addCoef.col = "black",  # 添加相关系数
         number.cex = 1)       # 数字字体大小

结果如下图:


attachments-2025-04-QuFne4oU67ff51e029de8.png

还可以修改为饼图:

corrplot(corr_matrix,method = 'pie',
         type = "upper",
         order = "AOE",      # 矩阵的排序方法,如 'original'、'AOE'、'hclust' 等
         is.corr = FALSE,    # 逻辑值,指示输入矩阵是否为相关性矩阵。
         col = my_col(100),  # 颜色向量,用于图形的颜色分布。
         col.lim = c(0.8,1), # 颜色分配的限制区间(相关性值区间)。
         tl.col = "black",   
         addCoef.col = "black",  # 添加相关系数
         number.cex = 1)       # 数字字体大小

结果如下图:


attachments-2025-04-UwqCwhTs67ff51fc9ddd3.png

最后还可以合二为一:

corrplot.mixed(corr_matrix, 
              lower = 'shade', 
              upper = 'pie', 
              order = "AOE",      # 矩阵的排序方法,如 'original'、'AOE'、'hclust' 等
              is.corr = FALSE,    # 逻辑值,指示输入矩阵是否为相关性矩阵。
              col.lim = c(0.8,1), # 颜色分配的限制区间(相关性值区间)。
              addCoef.col = "black",  # 添加相关系数
              number.cex = 1)

结果如下图:


attachments-2025-04-zQ1qi45r67ff520e2e367.png

好了,小编就先给大家介绍到这里希望对您的科研能有所帮助!祝您工作生活顺心快乐!

  • 发表于 3天前
  • 阅读 ( 56 )
  • 分类:R

0 条评论

请先 登录 后评论
安生水
安生水

357 篇文章

作家榜 »

  1. omicsgene 717 文章
  2. 安生水 357 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 86 文章
  6. rzx 81 文章
  7. 红橙子 79 文章
  8. CORNERSTONE 72 文章