五分钟绘制炫酷的相关性分析图

表述生物学的意义的过程中我们离不开相关性图的绘制,相关性图的绘制非常的重要,散点图、线性图还会有炫酷的类似热图的形式呈现相关性分析是常用的手段。相关性表示两组数据之间的关系是否“相似”或“相近”;遇到多组数据时,相关性图就可以清晰的表明多组数据之间的关系。今天小果带你把相关性分析的数据做的漂亮。

corrgram包绘制

#安装加载包

install.packages(“corrgram”)

library(corrgram)

# 查看数据集

head(iris)

截屏2023-07-12 22.29.12

corrgram(iris)

截屏2023-07-12 22.20.21

# 加载 corrgram 包

library(corrgram)

# 使用 mtcars 数据集

data(mtcars)

head(mtcars)

# 绘制相关性图

corrgram(mtcars, order=TRUE, lower.panel=panel.shade,

upper.panel=panel.ellipse, diag.panel=panel.minmax,

main=”Correlation Matrix Plot of mtcars Data”)

截屏2023-07-13 08.03.50 lower.panel=panel.shade: 这个选项用于指定相关性图的下层面板绘制方式。panel.shade会绘制底层面板,通过颜色来代表相关性的强弱。颜色越浅表示相关性越强,颜色越深表示相关性越弱。

upper.panel=panel.ellipse: 这个选项用于指定相关性图的上层面板绘制方式。panel.ellipse会绘制上层面板,通过椭圆形来展示相关性的概率分布。椭圆形的大小和形状表示相关性的强度和方向。

diag.panel=panel.minmax: 这个选项用于指定对角线上的面板绘制方式。panel.minmax会在对角线的面板中展示每个变量的最小值和最大值。

可以根据自己的需求选择合适的绘图方式。

用corrplot包绘制

# 安装并加载corrplot包,提供了两种安装软件包的方式,BiocManager安装会更好用一些,遇到安装中跳出“Do you want to install from sources the package which needs compilation? (Yes/no/cancel) ”的语句都输入“y”即可。这是因为一些依赖的包需要安装

install.packages(“corrplot”)

BiocManager::install(“corrplot”)

library(corrplot)

# 创建一个包含三个变量的相关性矩阵

corr_matrix <- matrix(c(1, 0.6, 0.3,

0.6, 1, 0.8,

0.3, 0.8, 1), nrow = 3)

# 绘制相关性图

corrplot(corr_matrix, method = “circle”)

截屏2023-07-13 08.48.44

#用R中自带的数据集mtcars再尝试一个例子

head(mtcars)

#计算“pearson”来计算相关性

M <- cor(mtcars,method = “pearson”)

head(M)

corrplot(M)

截屏2023-07-13 20.16.23

下面跟着小果一起调节一些参数来保证图片的美观性叭~

1、标签性质

corrplot(M, method = “circle”,

tl.col = “black”, tl.cex = 0.8, tl.srt = 30)

#调标题颜色,tl标签的的性质tl.col = “black”,大小 tl.cex = 1.2,角度 tl.srt = 45

截屏2023-07-13 20.33.49

2、绘图类型和位置

corrplot(M, method = “pie”,

type = “upper”,

tl.col = “black”, tl.cex = 1.2, tl.srt = 45

)

#method和type还有很多选项哦,可以都尝试一下

#method = c(“circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”)

#type = c(“full”, “lower”, “upper”)

截屏2023-07-13 20.34.18

  1. 组合式绘制

corrplot(M, method = “ellipse”, type = “upper”,

tl.col = “black”, tl.cex = 0.8, tl.srt = 45,tl.pos = “lt”)

corrplot(M, method = “number”, type = “lower”,

tl.col = “n”, tl.cex = 0.8, tl.pos = “n”,

add = T)

#上边绘制椭圆形的相关性,下边标出相关性的指数,其实就分别画两个图,第二个图加一个命令add = T,代表叠加。

截屏2023-07-13 20.36.41

4、调一个色彩盘

library(RColorBrewer)

addcol <- RColorBrewer::brewer.pal(12,”Set3″)

corrplot(M, method = “pie”, type = “upper”,col = addcol,

tl.col = “black”, tl.cex = 0.8, tl.srt = 45,

tl.pos = “lt”)

corrplot(M, method = “number”, type = “lower”,col = addcol,

tl.col = “n”, tl.cex = 0.8, tl.pos = “n”,

add = T)

截屏2023-07-13 20.46.28

小果的审美不是很好,读者们可以根据自己的喜好,寻找一些颜色上的美感呀~

#添加统计学意义星号

这里添加的是常用的P值,标注显著性

ddcol <- RColorBrewer::brewer.pal(12,”Paired”)

testRes = cor.mtest(M, menthod = “pearson”, conf.level = 0.95)

corrplot(M, method = “color”, col = addcol,

tl.col = “black”, tl.cex = 0.8, tl.srt = 45,tl.pos = “lt”,

p.mat = testRes$p, diag = T, type = ‘upper’,

sig.level = c(0.001, 0.01, 0.05), pch.cex = 1.2,

insig = ‘label_sig’, pch.col = ‘grey20’, order = ‘AOE’)

corrplot(M, method = “number”, type = “lower”,col = addcol,

tl.col = “n”, tl.cex = 0.8, tl.pos = “n”,order = ‘AOE’,

add = T)

截屏2023-07-13 20.49.48

附:

小果想把这个函数的具体参数和用法放在这里

corrplot(corr,

method = c(“circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”),

type = c(“full”, “lower”, “upper”), add = FALSE,

col = NULL, bg = “white”, title = “”, is.corr = TRUE,

diag = TRUE, outline = FALSE, mar = c(0,0,0,0),

addgrid.col = NULL, addCoef.col = NULL, addCoefasPercent = FALSE,

order = c(“original”, “AOE”, “FPC”, “hclust”, “alphabet”),

hclust.method = c(“complete”, “ward”, “single”, “average”,

“mcquitty”, “median”, “centroid”),

addrect = NULL, rect.col = “black”, rect.lwd = 2,

tl.pos = NULL, tl.cex = 1,

tl.col = “red”, tl.offset = 0.4, tl.srt = 90,

cl.pos = NULL, cl.lim = NULL,

cl.length = NULL, cl.cex = 0.8, cl.ratio = 0.15,

cl.align.text = “c”,cl.offset = 0.5,

addshade = c(“negative”, “positive”, “all”),

shade.lwd = 1, shade.col = “white”,

p.mat = NULL, sig.level = 0.05,

insig = c(“pch”,”p-value”,”blank”, “n”),

pch = 4, pch.col = “black”, pch.cex = 3,

plotCI = c(“n”,”square”, “circle”, “rect”),

lowCI.mat = NULL, uppCI.mat = NULL, …)

corr:需要可视化的相关系数矩阵

method:指定可视化的方法,可以是圆形、方形、椭圆形、数值、阴影、颜色或饼图形

type:指定展示的方式,可以是完全的、下三角或上三角(“full”,“upper”和”lower”)

col:指定图形展示的颜色,默认以均匀的颜色展示

bg:指定图的背景色

title:为图形添加标题

is.corr:是否为相关系数绘图,默认为TRUE,同样也可以实现非相关系数的可视化,只需使该参数设为FALSE即可

diag:是否展示对角线上的结果,默认为TRUE

outline:是否绘制圆形、方形或椭圆形的轮廓,默认为FALSE

mar:具体设置图形的四边间距

addgrid.col:当选择的方法为颜色或阴影时,默认的网格线颜色为白色,否则为灰色

addCoef.col:为相关系数添加颜色,默认不添加相关系数,只有方法为number时,该参数才起作用

addCoefasPercent:为节省绘图空间,是否将相关系数转换为百分比格式,默认为FALSE

order:指定相关系数排序的方法,可以是原始顺序(original)、特征向量角序(AOE)、第一主成分顺序(FPC)、层次聚类顺序(hclust)和字母顺序,一般”AOE”排序结果都比”FPC”要好

hclust.method:当order为hclust时,该参数可以是层次聚类中ward法、最大距离法等7种之一

addrect:当order为hclust时,可以为添加相关系数图添加矩形框,默认不添加框,如果想添加框时,只需为该参数指定一个整数即可

rect.col:指定矩形框的颜色

rect.lwd:指定矩形框的线宽

tl.pos:指定文本标签(变量名称)的位置,当type=full时,默认标签位置在左边和顶部(lt),当type=lower时,默认标签在左边和对角线(ld),当type=upper时,默认标签在顶部和对角线,d表示对角线,n表示不添加文本标签

tl.cex:指定文本标签的大小

tl.col:指定文本标签的颜色

cl.pos:图例(颜色)位置,当type=upper或full时,图例在右表®,当type=lower时,图例在底部,不需要图例时,只需指定该参数为n

addshade:只有当method=shade时,该参数才有用,参数值可以是negtive/positive和all,分表表示对负相关系数、正相关系数和所有相关系数添加阴影。注意:正相关系数的阴影是45度,负相关系数的阴影是135度

shade.lwd:指定阴影的线宽

shade.col:指定阴影线的颜色

如果你在作图中有问题,可以借助一些网上的云作图工具来实现http://www.biocloudservice.com/home.html

好了,这样我们相关分析就做完了。小伙伴们如果有什么问题就和小果讨论吧。