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

news2024/9/30 7:20:25

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

      相关性热图 (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

输出结果:

(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

输出结果:

(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

输出结果:

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

输出结果:

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

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

输出结果:
 

 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()

输出结果:

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

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


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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/687450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

html面试题-概念题汇总

文章目录 html面试题汇总 src和href的区别 HMTL的全局属性有哪些&#xff1f; 超链接访问过后hover样式就不出现的原因是什么&#xff1f;怎么解决&#xff1f; 表单中readonly和disabled属性的区别&#xff1f; iframe的优缺点&#xff1f; 浏览器渲染页面的过程 viewport属性…

GO channel解析

GO channel解析 是什么&#xff1f; 官方文档&#xff1a; https://go.dev/ref/spec#Channel_typeshttps://go.dev/blog/pipelines&#xff08;channel提供了流式编程的例子&#xff09; 在 Go 语言中&#xff0c;channel 是一种用于在 goroutine 之间进行通信和同步的机制。…

【FFmpeg实战】音频解码与编码流程

解码流程 音频编解码流程与视频编解码流程一致&#xff0c;我们可以对 mp4 文件的音频流进行解码&#xff0c;并将解码后的音频数据保存到 PCM 文件中&#xff0c;后续我们可以通过读取 PCM 文件中的数据实现音频流的编码操作 FFmpeg音频解码流程 extern"C" { #inc…

ICC2: Create Placement Blockage

area-based的placement blockage有四种,hard、hard macro、soft,partial。hard 属性限制所有standard cell、hard macro放进hard blockage中;hard macro仅限制hard macro(如sram);soft属性限制placement的init_place阶段(也叫coarse placement)把standard cell和hard macro…

Vuex学习

5.1.理解 Vuex 5.1.1.Vuex 是什么 概念&#xff1a;专门在Vue中实现集中式状态&#xff08;数据&#xff09;管理的一个Vue插件&#xff0c;对Vue应用中多个组件的共享状态进行集中式的管理&#xff08;读/写&#xff09;&#xff0c;也是一种组件间通信的方式&#xff0c;且适…

深度学习05-CNN循环神经网络

概述 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种具有循环连接的神经网络结构&#xff0c;被广泛应用于自然语言处理、语音识别、时序数据分析等任务中。相较于传统神经网络&#xff0c;RNN的主要特点在于它可以处理序列数据&#xf…

超全汇总,性能测试常用指标大全(重要)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 两种性能指标 业…

Java又双叒叕“凉”了?

前几天&#xff0c;TIOBE的一份6月编程语言榜单公布&#xff1a;Java退出前三&#xff0c;位居第四。一波Java凉了的言论甚嚣尘上。其实不止Java&#xff0c;python、C、C&#xff0c;哪一个没被提过“凉”... 而现实是&#xff0c;Java的招聘需求依然很大&#xff1a; 不可否…

C++静态和动态链接库导出和使用

1、简介 代码开发过程中会遇到很多已有的函数库&#xff0c;这些函数库是现有的&#xff0c;成熟的&#xff0c;可以复用的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个人的代码都从零开始&#xff0c;因此库的存在意义非同寻常。 本质上来说库是一种…

便携式水质自动采样器助力毒情监测

便携式水质自动采样器可助力毒情监测&#xff1a; 污水涉毒采样检测工作是运用科技手段准确评估监测辖区内毒情形势的重要手段。期间&#xff0c;民警详细了解了生活和工业污水的处理、排放以及服务范围、人口数量等情况&#xff0c;并就污水涉毒采样检测工作达成共识。随后&am…

revit中用幕墙来绘制瓦片屋面和生成土钉墙

一、revit中用幕墙来绘制瓦片屋面 层层叠叠的瓦片在我们绘制时具有复杂性&#xff0c;瓦片既美观又满足一些建筑的需要&#xff0c;下面教大家一个用幕墙来绘制瓦片屋面。 新建一个族样板选择公制轮廓—竖挺&#xff0c;绘制我们的瓦片形状 简单的绘制一个瓦片的形状&#xff0…

JVM学习整理(一)

一、JVM的基本介绍 JVM 是 Java Virtual Machine 的缩写&#xff0c;它是一个虚构出来的计算机&#xff0c;一种规范。通过在实际的计算机上仿真模拟各类计算机功能实现 好&#xff0c;其实抛开这么专业的句子不说&#xff0c;就知道JVM其实就类似于一台小电脑运行在windows或…

ruoyi-vue前后端分离项目实现一体化打包(前后端合并打包)

场景 现在要对ruoyi-vue前后端分离项目&#xff0c;进行一体化打包&#xff0c;即 将前后端项目打在一个jar里面 一体化打包优点 不需要再使用nginx&#xff0c;直接将前端文件放到后端项目里面 改造ruoyi-vue项目 后端改造 1、引入依赖spring-boot-starter-thymeleaf &…

倒计时 1 天 | SphereEx 在 2023 亚马逊云科技中国峰会等你来打卡!

2023 年 6 月 27 - 28 日&#xff0c; “因构建而可见” 2023 亚马逊云科技中国峰会将在上海隆重举行&#xff0c;SphereEx 将携面向新一代数据架构的数据库增强引擎&#xff1a;SphereEx-DBPlusEngine 亮相亚马逊云科技中国峰会&#xff0c;展示分布式数据库、数据安全、信创替…

FFmpeg视频转码关键参数详解

1 固定码率因子crf&#xff08;Constant Rate Factor&#xff09; 固定码率因子&#xff08;CRF&#xff09;是 x264 和 x265 编码器的默认质量&#xff08;和码率控制&#xff09;设置。取值范围是 0 到 51&#xff0c;这其中越低的值&#xff0c;结果质量越好&#xff0c;同…

实力见证丨酷雷曼VR再获2项国家发明专利

近日&#xff0c;酷雷曼公司&#xff08;北京同创蓝天云科技有限公司&#xff09;再次喜获两项发明专利证书:“VR多端协同交互方法及相关设备”、“VR展示用户操作方法及相关设备” 。两项专利均基于酷雷曼3D VR系统发明&#xff0c;进一步优化了目前VR全景触控界面互动性及交互…

企业所得税高是怎么回事?该如何解决?

企业所得税高是怎么回事&#xff1f;该如何解决&#xff1f; 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税! 企业所得税高&#xff0c;一般企业都会运用一些税务筹划的方式来解决&#xff0c;那么事前的规划和搭建好业务框架就显得尤为重要。真…

FFmpeg初识

一、简介 它的官网为&#xff1a;https://ffmpeg.org/&#xff0c;由Fabrice Bellard&#xff08;法国著名程序员Born in 1972&#xff09;于2000年发起创建的开源项目。该人是个牛人&#xff0c;在很多领域都有很大的贡献。 FFmpeg是多媒体领域的万能工具。只要涉及音视频领域…

第43步 深度学习图像识别:InceptionResnetV2建模(Tensorflow)

基于WIN10的64位系统演示 一、写在前面 &#xff08;1&#xff09;InceptionResnetV2 InceptionResNetV2是一种由Google研究人员开发的深度学习模型&#xff0c;是一种混合了Inception和ResNet&#xff08;残差网络&#xff09;两种结构的卷积神经网络&#xff08;CNN&#…

通过cifar-10数据集理解numpy数组的长(H)、宽(W)、通道(C)

文章目录 1、CIFAR-10数据集介绍1.1 CIFAR-10数据集的构成1.2 batches.meta1.3 data_batch_n.py & test_batch.py 2、获取一张图片的data数据2.1 反序列化获得numpy数据2.2 清楚numpy中的H、W、C的含义2.3 清楚RGB图片在numpy中的表示 3、处理图片数据的代码 1、CIFAR-10数…