利用R中的corrmorant包绘制精美的相关性热图

      大家好,我是带我去滑雪!

      相关性热图 (correlation heatmap) 是一种可视化工具,用于展示数据集中各个变量之间的相关性。它以矩阵的形式显示变量之间的相关系数,并通过色彩编码来表示相关性的强度。在相关性热图中,每个变量都对应图中的一行和一列。图中的每个单元格代表两个变量之间的相关性,通常使用颜色来表示相关性的强度。通常,相关性的计算采用的是Pearson相关系数,它度量线性关系的强度和方向。热图中的颜色编码比较常见的方式是使用一个渐变的色谱图。一般来说,较高的正相关性对应着较深或较亮的颜色,如红色或黄色;而较高的负相关性对应着较深或较亮的颜色,如蓝色或绿色;较低的相关性则对应着较浅或较暗的颜色。

     相关性热图可以帮助我们快速观察和理解数据集中变量之间的关系。通过分析相关性热图,我们可以发现哪些变量之间存在强相关性、弱相关性或者无相关性。这对于特征选择、变量关系分析和模型构建等任务都非常有用。那么如何利用R绘制一些漂亮的相关性热图呢?本期介绍一个corrmorant包。

目录

1、安装corrmorant包并调用

2、导入数据

3、绘制相关性矩阵

4、绘制相关性热图

 5、生成R绘图配色表


1、安装corrmorant包并调用

install.packages("remotes")
remotes::install_github("r-link/corrmorant",force = TRUE)
library(corrmorant)
library(ggplot2)
library(cols4all)

2、导入数据

       使用R语言自带的鸢尾花数据集,该数据集有五个变量,分别是鸢尾花的萼片长度、萼片宽度、花瓣长度、花瓣宽度以及鸢尾花的种类,由于种类不是数值变量,故只用前四个变量。

data <- datasets::iris
head(data)

输出结果:
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

3、绘制相关性矩阵

(1)第一种

        在相关性矩阵中,对角线放置直方图,下三角放置散点图和拟合曲线,上三角放置相关系数。

picture <- ggcorrm(data,
             corr_method = c('pearson')) + #分析方法选择,可选'pearson','kendall' or 'spearman'
  lotri(geom_point()) + #下三角区域添加散点图
  lotri(geom_smooth(method = 'lm')) + #下三角区域添加拟合曲线
  utri_corrtext(corr_size = TRUE) + #上三角区域添加相关性系数
  dia_names(y_pos = 0.15) + #对角线区域添加分类标签
  dia_histogram(lower = 0.3, upper = 0.98, color = 'grey30') #对角线区域添加直方图

picture

输出结果:

利用R中的corrmorant包绘制精美的相关性热图_第1张图片

(2)第二种

       对角线放置核密度曲线,下三角放置散点图和拟合曲线,上三角放置相关系数

pictures <- ggcorrm(data,
              corr_method = c('pearson')) +
  lotri(geom_point(alpha = 0.3)) +
  lotri(geom_smooth(method = 'lm',
                    fill = 'slateblue',color = 'sienna2')) +
  utri_corrtext(corr_size = FALSE) + #逻辑值为TRUE时,按照相关性强弱调整系数文本大小;FALSE则按相同大小显示
  dia_names(y_pos = 0.15, size = 3.5) +
  dia_density(lower = 0.3, upper = 0.98,
              fill = 'turquoise2', color = 'cyan', alpha = 0.3) #对角线区域添加核密度曲线
pictures

输出结果:

利用R中的corrmorant包绘制精美的相关性热图_第2张图片

(3)第三种

       绘制几种类别的数据在同一幅图中方便进行比较。

pictures1 <- ggcorrm(data,
              mapping = aes(color = Species, fill = Species)) +
  lotri(geom_point(alpha = 0.3)) +
  lotri(geom_smooth(method = 'lm')) +
  utri_corrtext(nrow = 2, #
                squeeze = 0.5, #存在多标签时,用于调整宽/高比例
                corr_size = F) +
  dia_names(y_pos = 0.15, size = 3.5) +
  dia_density(lower = 0.3, upper = 0.98,
              alpha = 0.6)
pictures1

输出结果:

利用R中的corrmorant包绘制精美的相关性热图_第3张图片

4、绘制相关性热图

         数据使用往期利用python爬取的房价信息,变量信息如下表所示。

表1 变量表

属性

解释

类型

变量名

WSSL

房屋的卧室数量(个)

连续值

x1

KTSL

房屋的客厅数量(个)

连续值

x2

MJ

房屋面积(平方米)

连续值

x3

FWZXQK

房屋装修情况

离散值,0=其他;1=毛坯;2=简装;3=精装

x4

YWDT

有无电梯

离散值,0=无电梯;1=有电梯

x5

LCWZ

房屋所在楼层位置

离散值,0=低楼层;1=中楼层;2=高楼层

x6

FJYWDT

房屋附近有无地铁

离散值,0=无地铁;1=有地铁

x7

GZD

关注度(人次)

连续值

x8

KFCS

看房次数

连续值

x9

TOTAL PRICE

房屋总价(万元)

连续值

y1

表2 经过数据预处理后的数据集

编号

x1

x2

x3

x4

x5

x6

x7

x8

x9

y1

1

2

2

78.6

0

1

2

1

58

14

210

2

4

2

98

0

1

0

1

2337

18

433

3

2

1

58.1

2

1

1

1

25

18

255

4

4

2

118

3

0

1

0

2106

6

195

5

3

1

97.7

2

0

2

0

1533

7

150

6

3

2

115.94

2

1

1

1

47

5

570

7

3

2

102.72

2

1

0

1

80

19

630

8

3

2

102.72

2

1

0

1

80

19

630

9

2

2

73.3

2

1

0

1

873

21

310

10

3

2

92

2

1

1

0

64

14

203

2981

2

1

80.3

2

1

1

1

8

0

375

2982

2

2

64.81

2

1

1

1

2

0

268

2983

2

1

57.26

0

0

0

1

0

0

235

2984

2

1

75.38

2

1

2

0

0

0

300

data=read.table("E:/工作/硕士/博客/博客38-/data.csv",header=TRUE,sep=",")
head(data)

输出结果:

    x1  x2     x3       x4 x5 x6 x7  x8    x9  y1
1  2    2     78.60    0  1    2  1   58   14 210
2  4    2     98.00    0  1    0  1 2337 18 433
3  2    1     58.10    2  1    1  1   25   18 255
4  4    2    118.00   3  0    1  0 2106  6 195
5  3    1    97.70     2  0    2  0 1533  7 150
6  3    2   115.94    2  1    1  1   47    5 570

pictures2 <- ggcorrm(data,
              mapping = aes(color = .corr, fill = .corr),
              corr_method = c('pearson'),
              rescale = 'by_sd') +
  lotri_heatcircle(alpha = 1, color = 'grey') + #下三角区域添加圆形热图
  utri_corrtext(squeeze = 0.6, corr_size = F) +
  dia_names(y_pos = 0.5, size = 5, color = 'black')
pictures2

输出结果:

利用R中的corrmorant包绘制精美的相关性热图_第4张图片

     在pictures2的基础上进一步美化,选择渐变配色:

pictures3 <- pictures2 +
  scale_colour_gradient2(aesthetics = c("fill", "color"),
                         limits = c(-1, 1),
                         low = '#06a7cd',
                         mid = "white",
                         high = '#e74a32')
pictures3

输出结果:
 

利用R中的corrmorant包绘制精美的相关性热图_第5张图片

 5、生成R绘图配色表

        在科研中,好的配色能够使绘制的图看着更加精美,下面生成R中所有的配色:

pdf('R语言颜色表.pdf',9,16)
cl=colors()
par(mar=c(0,0,0,0),bty="n")
plot(c(0, 98), c(0, 73), type = "n", xlab = "", ylab = "")
title(line = -2, main = 'R语言颜色表')
for(i in 0:8){
  rect(i*11,73:1,i*11+10,72:0,col=cl[1:73+i*73])
  text(i*11+5,73:1-0.5,labels = cl[1:73+i*73],cex = 0.6)
}
dev.off()
输出结果:

利用R中的corrmorant包绘制精美的相关性热图_第6张图片

需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/16GeXC9_f6KI4lS2wQ-Z1VQ?pwd=2138
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

若有问题可邮箱联系:[email protected] 

博主的WeChat:TCB1736732074

   点赞+关注,下次不迷路!

你可能感兴趣的:(机器学习之R,r语言,开发语言)