热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何基于ggplot2构建相关系数矩阵热图以及一个友情故事

本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。

04f3986e0a9aae7f5f0fd9cdc780a86d.png

点击关注了解更多精彩内容!!

449a7aab7e152590cea727a22a8f63ca.gif古人云:有缘千里能相会,无缘对面不相逢。铁哥认为“缘分”如果用数据来表示的话,那么可以用相关系数来进行量化。如果你和一个人的缘分足够深,那么你们之间的皮尔逊相关系数应该接近于1。但是真爱难觅,茫茫人海中,人们找到和自己的真心人(Mr/Miss Right)的概率却是千万分之一。

为了讲清楚如何基于ggplot2构建相关系数矩阵热图,铁哥打算讲个小故事?,缓解一下紧张的学习气氛。铁哥想先从友情故事讲起,虽然真爱难寻,谁还没个好朋友呢?!

铁哥有很多小伙伴,本文主要讲本科的小伙伴们吧,故事的主角有小通、小杭、小易、小明、小磊、小孙和小铁(铁哥那时候还算小铁?)吧。本科的时候,我们会参加各种各样的考试,如数学分析、SAS软件编程、随机过程、大学物理、诗歌鉴赏和体育等;铁哥记得当时:

小通、小杭、小易跟小明沉迷网络游戏,很多科目都是惊险及格;

小磊和小孙虽然也打游戏,但是他们还热爱⚽️,所以体育成绩特别好;

小铁游戏打得不好,?打得还不错,总体成绩比较平均。

下面铁哥用R语言定义每个同学的六门学习成绩。

# 定义每位小伙伴的各科成绩

# 课程包括:数学分析、SAS软件编程、随机过程、大学物理、诗歌鉴赏、体育

f9acdf05030f3273e61e3b2cba4a911d.pngccb73e67ae3b31b27977dd03a4ecf249.png

然后我们把七位小伙伴的成绩合并为数据集:

# 注意这里管道符 %>% 的使用

# 为了使数据集结构更清晰,我们还改变了行的名字

4c2eeeedf26e5a00c30e95640a436cc9.png

俗话说:人以类聚,物以群分。

我们来进一步计算一下七个小伙伴的皮尔逊相关系数矩阵吧:

eaa5be436a1e91d07427c5acf5b9e08f.png

为了使用ggplot2来画热图,我们还需要更改相关系数矩阵的格式,这里我们调用reshape2 来改变相关系数矩阵的格式从而适应ggplot2的语法,R代码如下:

2ba6ea5d547656aefed70dc663a02edb.png

然后我们就可以使用ggplot2函数画出相关系数热图了,R代码如下:

# geom_title()函数用于相关系数的可视化

# element_text(family = ‘Kai’) 用于图例中显示中文字体

18483b25a525b9a782a7b25e7b28c528.png

9b70dc222b91d1387bbe848c86795574.png

当然,上面这个默认生成的热图非常丑陋?,铁哥也是一筹莫展。事实上,相关系数矩阵是存在冗余信息的,我们其实只保留上三角矩阵的信息就够了(矩阵对称),即将下三角矩阵元素赋值为NA。

01733bda3f9d9292d96fde21a0b74b66.png

基于这个上三角矩阵,我们再用ggplot函数画出相应的相关系数热图:

#下图中蓝色代表负相关,红色代表正相关

f43b6abe49a603ef7c3ee8bd13a8008c.png

0d608fdd05cefad9bf1b2317815b7ad3.png

上面这个热图已经蛮不错了,但是铁哥还想更完美一点,铁哥希望相似度越高的个体距离越近,大家能够志同道合,拥有高山流水的友情。我们将使用hclust函数对样本进行重排序:

600c4afd51f764b30e5b4d493c3c4514.png

 335654639219979d976130ca3ccdec91.png

f9acdf05030f3273e61e3b2cba4a911d.png

上面这个热图已经接近完美了,但是铁哥还想把相关系数加到图像中去:

840009650ce105cb8519589f686aae75.png

3fe926527cac4895bfe05992d1232060.png

8b91fe725e7f955c6da5a77c31df3afd.png

最终铁哥构建了想要的相关系数热图,从上图中可以看出,铁哥的小伙伴可以聚类为两类:小磊和小孙明显有更多的相似处,小杭、小易、小铁、小通和小明则志趣相投。

77f220922283f643930caa01c74e8b2d.png

回想起来,铁哥本科毕业也八年了,小磊和小孙也在国外知名外企站稳了脚跟,小杭、小易、小通和小明也在各自的岗位上贡献中坚力量,似乎也进一步印证了这张热图的结果。

唯有铁哥,依然奋战在科研的第一线,梦想着成为一个科学家。你若问我为什么,铁哥只能回答你一句话:21世纪是生命科学的世纪?…

PS:如果你想继续学习构建炫酷的个性化定制热图,欢迎联系铁哥额b8b30f0d33f45d5699c48a2a6adfd691.png ,欢迎添加微信号:evazyc90,前来咨询。

07bcfbcf87fb837516091be50c0c3f8c.gif

R语言中强大的map函数——铁哥小故事版

R语言中神奇的管道符“%>%”

Ubuntu系统下通过添加PPA形式更新R软件版本

Mac系列电脑上应用命令行安装R和Rstudio

在电脑和服务器上离线安装R包

编辑:沃沃酱  监制:悠悠然

铁哥在等你一起学习哦~

585c5267e9a4caf113cde45a59480d3d.png

长按扫码关注

在看”的永远不秃顶~

45b548e4079295b232fff16bd5bcbdcb.gif


推荐阅读
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • Android 中的布局方式之线性布局
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文深入探讨了WPF框架下的数据验证机制,包括内置验证规则的使用、自定义验证规则的实现方法、错误信息的有效展示策略以及验证时机的选择,旨在帮助开发者构建更加健壮和用户友好的应用程序。 ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 在使用 Nginx 作为服务器时,发现 Chrome 能正确从缓存中读取 CSS 和 JS 文件,而 Firefox 却无法有效利用缓存,导致加载速度显著变慢。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 分层学习率衰减在NLP预训练模型中的应用
    本文探讨了如何通过分层学习率衰减技术来优化NLP预训练模型的微调过程,特别是针对BERT模型。通过调整不同层的学习率,可以有效提高模型性能。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
author-avatar
piggyear
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有