今天学习下相关性矩阵的可视化,可以用来可视化相关性矩阵的包有corrplot包、corrgram包、GGally包、ggcorrplot包等,这些包在大部分情况下都可以满足需求。今天先来学习corrplot包的使用,后面几天有空会详细讲解下另外三个包。
目 录
1. 安装和加载R包
2. 加载数据集
3. 数据处理
3.1 转换矩阵
3.2 计算相关系数
4. 简单绘制
5. 自定义参数
5.1 可视化方法
5.2 矩阵显示类型
5.3 绘制组合图形
5.4 相关矩阵排序
5.5 设置矩阵颜色
5.6 设置文本标签属性
5.7 设置图例属性
5.8 设置图形外观
5.9 设置显著水平
1. 安装和加载R包
corrplot包可以用来可视化相关矩阵,这个包中的参数很多,可以很详细的自定义图形。
第一步先安装和加载好R包。
install.packages("corrplot") # 安装包
library(corrplot) # 加载包
2. 加载数据集
使用mtcars内置数据集进行演示,先加载包,看下数据集的信息。
data(mtcars) # 加载数据集
head(mtcars, 10) # 查看数据集前10行
3. 数据处理
在使用mtcars数据集绘制图形前需要对数据集进行一些简单处理。
3.1 转换矩阵
绘图前可以将数据集转换为矩阵,当然,我也看到很多推文没有将数据集转换成矩阵,一样可以绘制图形,这一步也许可以省略。
mtcars # 转化为矩阵
3.2 计算相关系数
在绘制图形前,先计算下相关系数,可以使用cor()函数,函数中有"pearson", "kendall", "spearman"三种方法计算,我们选择默认的"pearson"方法即可。
cor_mtcars 'pearson')
cor_mtcars
4. 简单绘制
先简单绘制个基本图形,我们在后面慢慢调整参数自定义图形。
corrplot(cor_mtcars)
如上图所示,一行代码就简单绘制出了图形。
在上图中,正相关用蓝色显示,负相关用红色显示。颜色强度和圆圈的大小与相关系数成正比。
下面我们开始慢慢调整参数设置图形。
5. 自定义参数
5.1 可视化方法
在上图中,可视化的方法method参数默认为"circle",也就是圆形显示。还可以使用"square","ellipse","number","pie","shade"和"color"显示,分别表示方形、椭圆形、数字、饼图、阴影、颜色。
layout(matrix(1:6, 2, 3)) # 分割绘图设备
corrplot(cor_mtcars, method = "square") # 方形
corrplot(cor_mtcars, method = "ellipse") # 椭圆形
corrplot(cor_mtcars, method = "number") # 数字
corrplot(cor_mtcars, method = "pie") # 饼图
corrplot(cor_mtcars, method = "shade") # 阴影
corrplot(cor_mtcars, method = "color") # 颜色
5.2 矩阵显示类型
在基础图形中,矩阵显示为全矩阵显示,可以设置type参数为"lower"和"upper",来分别显示上三角和下三角矩阵。
layout(matrix(1:2, 1, 2)) # 分割绘图设备
corrplot(cor_mtcars, type = "lower") # 下三角矩阵
corrplot(cor_mtcars, type = "upper") # 上三角矩阵
5.3 绘制组合图形
在上面我们可以绘制出上三角和下三角矩阵图形,然后可以使用add参数来绘制组合图形。
add为TRUE则可以图形添加到现有图形中。
corrplot(cor_mtcars, method = "square",
type = "lower") # 下三角矩阵
corrplot(cor_mtcars, method = "pie",
type = "upper", add = TRUE) # 上三角矩阵
如上图所示,先绘制一个下三角图形,再将上三角图形添加到图形上。
5.4 相关矩阵排序
在corrplot包中,使用order参数设置相关性矩阵排序,排序方法有original(默认)、AOE、FPC、hclust、alphabet等5种。
我们看看其他四种排序是什么样的。
layout(matrix(1:4, 2, 2)) # 分割绘图设备
corrplot(cor_mtcars, order = "AOE") # 特征向量角序
corrplot(cor_mtcars, order = "FPC") # 第一主成分顺序
corrplot(cor_mtcars, order = "hclust") # 按层次聚类
corrplot(cor_mtcars, order = "alphabet") # 按字母顺序
当order为"hclust"按层次聚类时,层次聚类方法也有几种,有"ward", "ward.D", "ward.D2", "single", "complete", "average", "mcquitty", "median"或"centroid"
等,可以使用hclust.method参数来指定。
同时也可以设置addrect参数来设置可视化矩阵上聚类矩形的数量,为NULL时默认不添加矩形。
可以使用rect.col、rect.lwd参数来设置聚类矩形的颜色和线宽。
layout(matrix(1:6, 2, 3)) # 分割绘图设备
corrplot(cor_mtcars, order = "hclust", # 按层次聚类
hclust.method = "ward.D2") #层次聚类方法
corrplot(cor_mtcars, order = "hclust",
hclust.method = "median")
corrplot(cor_mtcars, order = "hclust",
hclust.method = "single")
corrplot(cor_mtcars, order = "hclust",
hclust.method = "complete",
addrect = 2) # 设置聚类矩形的数量
corrplot(cor_mtcars, order = "hclust",
hclust.method = "average",
addrect = 2, rect.col = "red") # 设置聚类矩形的颜色
corrplot(cor_mtcars, order = "hclust",
hclust.method = "mcquitty",
addrect = 4, rect.lwd = 3) # 设置聚类矩形的线宽
5.5 设置矩阵颜色
使用col参数来设置颜色,还可以使用bg参数设置背景颜色。
layout(matrix(1:3, 1, 3)) # 分割绘图设备
col = colorRampPalette(c('blue', 'white', 'red'))(40)
corrplot(cor_mtcars, method = "color")
corrplot(cor_mtcars, method = "color", col = col) # 矩阵颜色
corrplot(cor_mtcars, method = "circle", bg = "grey") # 背景颜色
还可以设置其他的颜色。
layout(matrix(1:6, 2, 3)) # 分割绘图设备
corrplot(cor_mtcars, order = "hclust", col = heat.colors(100))
corrplot(cor_mtcars, order = "hclust", col = terrain.colors(100))
corrplot(cor_mtcars, order = "hclust", col = cm.colors(100))
corrplot(cor_mtcars, order = "hclust", col = gray.colors(100))
library(RColorBrewer)
corrplot(cor_mtcars, order = "hclust", col = brewer.pal(n = 8, name = "RdYlBu"))
corrplot(cor_mtcars, col = brewer.pal(n = 8, name = "PuOr"))
5.6 设置文本标签属性
layout(matrix(1:4, 2, 2)) # 分割绘图设备
corrplot(cor_mtcars, tl.pos = "n") # 不显示文本标签
corrplot(cor_mtcars, tl.pos = "lt") # 在左边和顶部显示
corrplot(cor_mtcars, tl.cex = 1.5) # 设置文本标签的缩放倍数
corrplot(cor_mtcars, tl.col = "black") # 设置文本标签的颜色
5.7 设置图例属性
颜色标签,也就是图形旁边的图例,可以使用cl.pos、cl.cex、cl.ratio、cl.align.text、cl.offset等参数来设置。
5.7.1 设置图例位置
corrplot(cor_mtcars, cl.pos = "n") # 不显示图例
corrplot(cor_mtcars, cl.pos = "r") # 图例放在右边
corrplot(cor_mtcars, cl.pos = "b") # 图例放在底部
5.7.2 设置图例文本属性
corrplot(cor_mtcars, cl.cex = 1.5) # 设置图例中数字标签的缩放倍数
corrplot(cor_mtcars, cl.ratio = 2.0) # 数字,设置图例的宽度
corrplot(cor_mtcars, cl.align.text = "l") # 字符,设置图例中的数字标签的对齐方式
5.8 设置图形外观
可以设置图形的标题、四边间距、网格线等。
layout(matrix(1:4, 2, 2)) # 分割绘图设备
corrplot(cor_mtcars, mar = c(2.2, 2.6,2.8,1.9)) # 设置图形四边间距
corrplot(cor_mtcars, addgrid.col = "black") # 设置网格线
corrplot(cor_mtcars, outline = "black") # 设置圆形、椭圆形等外边框
corrplot(cor_mtcars, tl.pos = "n",
title = "R语言统计与绘图 公众号") # 添加图形标题
5.9 设置显著水平
可以在图形上显示显著性水平。
layout(matrix(1:4, 2, 2)) # 分割绘图设备
res1 .95)
corrplot(cor_mtcars, p.mat = res1$p,
sig.level = .2) # 设置p值>0.2的不显示
corrplot(cor_mtcars, p.mat = res1$p,
sig.level = .05) # 设置p值>0.05的不显示
corrplot(cor_mtcars, p.mat = res1$p,
insig = "blank") # 擦除p值>0.05的相关系数,设置为空白
corrplot(cor_mtcars, p.mat = res1$p,
insig = "p-value")
参考资料
- corrplot()函数帮助文件
既往专辑