热门标签 | 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


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 在ubuntu服务器上安装vscode,但是目前使用的方法都无法成功。第一次安装经历:安装完anaconda后有自动安装vscode的选项,输入yes后,没有出现错误,但是在终端输 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
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社区 版权所有