最近学习了好几种画相关性热力图的包,为了更好地运用这些包,决定整理一下~~~
1. GGally包
准确地来说,可以利用该包当中的ggpair()函数来计算相关系数以及绘图,但在图中,相关系数仅仅是数值展示,并未做出热力图展示。具体实例说明可见之前的推文:
2022-11-10逐步回归分析——以房屋能效数据集为例
相应的相关系数可通过设置参数method的值来进行更改,method="spearman".
2. ggcorrplot包
该包利用ggcorrplot()函数进行相关性热图分析,从而探索各个变量之间的相关性。具体实例说明可见之前的推文:
2022-11-28第五章习题以及R packages|ggcorrplot : 相关矩阵的可视化(热图)
使用cor()函数计算相关系数,通过指定参数method值计算相应的相关系数;
使用该包当中的cor_pmat()函数计算p值
3. corrplot包
该包包含两个可以进行相关系数可视化的函数:corrplot()和corrplot.mixed()。其中,函数corrplot.mixed()实现了矩阵上下三角阵不同的图形模式。具体实例说明可见之前的推文:
2022-11-16Logistic回归模型以及corrplot::corrplot()和corrplot.mixed()
同样使用cor()函数计算相关系数,另外,使用该包当中的cor.mtest()函数计算p值
4. ggplot2包
如果说用一个包能够解决你大部分的绘图问题,那我们何乐而不为呢?这个包就是ggplot2,它在R中有着不可撼动的位置。因此,我们有必要知道如何用ggplot2去画相关性热图。
R语言绘制相关性热图
# 加载包
library(ggplot2)
library(dplyr)
library(tidyr)
# 加载数据
data(mtcars)
head(mtcars)
# cor()函数计算相关系数,默认是Pearson
## 直接计算得到的是相关矩阵,为了后面画图需要转化成data.frame
## 考虑到后面的热力图x,y轴都是变量,因此这里需要单独添加一列变量名
cormtcars <- round(cor(mtcars),3) %>% as.data.frame()
cormtcars$factor <- row.names(cormtcars)
head(cormtcars,3)
# 数据转换,宽型变为长型
mtcars_long <- gather(cormtcars,key = "variable",value = "value",mpg:carb)
head(mtcars_long,3)
长型数据
# 绘制热图
## 确定绘图时x,y轴的因子顺序
list <- factor(row.names(cormtcars),levels = row.names(cormtcars))
p <- ggplot(mtcars_long, aes(factor(factor,levels = list),
factor(variable ,levels = list),fill = value)) +
theme_bw(base_family = "STKaiti") +
geom_tile() +
scale_fill_gradientn(colors = c("blue","white","red")) +
labs(x="",y="",title = "相关性热图") +
theme(plot.title = element_text(hjust = 0.5))
p
相关性热图
配色是丑了些,颜色这个东西不到发文章阶段根本不想调,哈哈哈~~~