# A tibble: 32 x 11
mpg cyl disp hp drat wt qsec vs am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
# i 22 more rows
R语言如何绘制相关性图
前言
本篇是corrplot包绘制相关性图的教程。
什么是相关性图?
相关性是指两个或多个变量之间的关系或相互影响程度。若两组的值一起增大,我们称之为正相关,若一组的值增大时,另一组的值减小,我们称之为负相关。其值介于-1与1之间,即越接近1,越正相关;越接近-1,越负相关。
常见的有两种计算相关性的算法:皮尔逊相关性(pearson)和斯皮尔曼相关性(spearman)。皮尔逊相关性最常用,适合正态分布的数据。斯皮尔曼相关性是秩相关,不受极大极小值的影响。
在组学中的应用,例如,两个技术性重复实验的结果相关性很低,则说明数据有异常。
需要注意的地方,做样本之间的相关性的时候,蛋白之间要对应,不可随意打乱顺序。数据中有缺失值的情况,通常用”pairwise.complete.obs”算法处理缺失值,即两两配对删除缺失值。
相关性图就是,用图的形式展现出相关性的结果。
绘图前的数据准备
这里就用R语言自带的示例数据了,mtcars
R语言如何绘制相关性图
# 代码来源:https://www.r2omics.cn/
library(corrplot)
# 计算相关性
= cor(mtcars,
corData method = "pearson", # 计算相关性的方法有"pearson", "spearman", "kendall"
use = "pairwise.complete.obs") # 缺失值处理的方式
# 计算相关性的P值和置信区间
= cor.mtest(mtcars,
testRes conf.level = 0.95, # 置信区间
method = "pearson") # 计算相关性的方法有"pearson", "spearman", "kendall"
# 绘图
corrplot(corData,
method = "circle", # 图案形状 "square"方框,"circle"圆, "ellipse"椭圆, "number"数字, "shade"阴影花纹, "color"颜色方框, "pie饼图"
type = "full", # 绘制范围"full"全部, "lower"下半部分, "upper"半部分
col=colorRampPalette(c('#0000ff','#ffffff','#ff0000'))(100), # 主体颜色
bg = "white", # 背景颜色
# col.lim = c(-1,1), # 数据颜色的范围,是相关性数据的话,直接is.corr = T就好
title = "", # 标题
is.corr = T, # 输入的矩阵是否是相关性矩阵,如果是的话,数据范围会限制到-1到1
add = F, # 是否在原来的图层上添加图形
diag = T, # 是否显示主对角
outline = F, # 图案的轮廓,True或False或某一颜色值
mar = c(0, 0, 0, 0), # 下 左 上 右 边距
addgrid.col = NULL, # 网格线的颜色,NA为不绘制,NULl为默认的灰色
addCoef.col = NULL, # 当method!="number"时,是否显示相关性数值,显示的颜色
addCoefasPercent = F, # 是否把相关性数值改为百分数
order = "original", # 排序方式 c("original", "AOE", "FPC", "hclust", "alphabet"), original:原始状态,alphabet:字母顺序 hclust,分层聚类顺序
hclust.method = c("complete", "ward", "ward.D", "ward.D2", "single", "average","mcquitty", "median", "centroid"), # 当order = "hclust"时,分层聚类的算法
tl.pos = "lt", # 坐标轴标签的位置'lt', 'ld', 'td', 'd' or 'n' # 左边 d中间
tl.cex = 1, # 坐标轴标签字体的大小
tl.col = "black", # 坐标轴标签字体的颜色
tl.offset = 0.4, # 坐标轴标签离图案的距离
tl.srt = 90, # 坐标轴标签旋转角度
cl.pos = "r", # 图例位置:r:右边 b:下边 n:不显示
cl.length = NULL, # 数字越大,图例的分隔越稠
cl.cex = 0.8, # 图例的字体大小
cl.ratio = 0.15, # 图例的宽度
cl.align.text = "c", # 图例文字的对齐方式 l左对齐 c居中 r右对齐
cl.offset = 0.5, # 图例文字距离图例颜色条的距离 居中时无效
number.cex = 1, # 相关性数字标签的字体大小
number.font = 2, # 相关性数字标签的字体
number.digits = 2, # 相关性数字标签,保留的小数点位数
na.label = "", # 当为NA时,显示的内容
p.mat = testRes$p, # P值矩阵
sig.level = 0.05, # 当p大于sig.level时触发动作
insig = "pch", # p值大于sig.level时的方案"pch"图案, "p-value"P值数字, "blank"空白, "n"无操作, "label_sig"星号,
pch = 4, # 当insig = "pch"时的图案形状 4为叉
pch.col = "black", # 图案颜色
pch.cex = 3, # 图案大小
plotCI = "n", # c("n", "square", "circle", "rect"), # p值置信区间的方案
lowCI.mat = testRes$lowCI, # p值置信区间下边界数据
uppCI.mat = testRes$uppCI, # p值置信区间上边界数据
)
如果想让上下部分绘制的图案不同,只需调整add = T参数,然后再调用corrplot绘制即可,需要注意的是不显示图例和坐标轴标签,其他参数尽量和之前一致。
corrplot(corData,
method = "number", # 图案形状 "square"方框,"circle"圆, "ellipse"椭圆, "number"数字, "shade"阴影花纹, "color"颜色方框, "pie饼图"
type = "lower", # "full", "lower", "upper"
col=colorRampPalette(c('#0000ff','#ffffff','#ff0000'))(100), # 主体颜色
bg = "white", # 背景颜色
is.corr = T, # 输入的矩阵是否是相关性矩阵,如果是的话,数据范围会限制到-1到1
add = T, # 是否在原来的图层上添加图形
diag = F, # 是否显示主对角
addCoefasPercent = F, # 是否把相关性数值改为百分数
order = "original", # 排序方式 c("original", "AOE", "FPC", "hclust", "alphabet"), original:原始状态,alphabet:字母顺序 hclust,分层聚类顺序
tl.pos = "n", # 坐标轴标签的位置'lt', 'ld', 'td', 'd' or 'n' # 左边 d中间
cl.pos = "n", # 图例位置:r:右边 b:下边 n:不显示
na.label = "", # 当为NA时,显示的内容
p.mat = testRes$p, # P值矩阵
sig.level = 0.05, # 当p大于sig.level时触发动作
)