高维数据 | R语言数据可视化之热力图
时间:2022-07-22
本文章向大家介绍高维数据 | R语言数据可视化之热力图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
R语言数据可视化之热图
热力图,在生信研究中是最常见的数据表现手法之一。特别是展示各种基因或RNA在不同样本中的表达情况,了解其表达模式。热图其实是将有规则的矩阵转化成或者映射成颜色色调的一种可视化方法。在实际应用中,由高通量测序得到的几万个基因或者几千个样本的表达量数据通过分组或K均值聚类算法得到热图。
01
随机生成数据
> set.seed(12345)
> d1<-data.frame(matrix(rnorm(160,13,8),ncol=10))
> d1
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 17.684231 5.9091398 29.393523 17.665501 8.304963 18.163065 8.959652 23.089938 -3.9883990 13.12684554
2 18.675728 10.3473793 26.059565 2.545609 -1.659018 21.345148 30.261759 23.553854 3.4317479 17.32135654
3 12.125573 21.9657012 15.034170 8.676911 20.105115 10.565047 8.201619 12.353970 26.1375359 0.62166426
4 9.372023 15.3897896 16.929506 28.581541 25.747908 32.816887 7.443626 8.959282 20.0692387 19.79722344
5 17.847100 19.2369754 10.407307 13.428722 17.134837 20.769765 14.791403 12.582771 17.1990071 20.16810547
6 -1.543648 24.6462807 -0.296402 15.813303 2.634627 27.936793 3.750213 18.030885 3.5227275 14.10952797
7 18.040788 7.8453726 27.141871 7.632188 13.436925 18.376340 16.379348 30.440019 34.2463062 0.04537342
8 10.790527 0.5749008 13.206408 15.223630 6.722805 10.536373 2.401958 12.447862 4.6166903 17.38718338
9 10.726722 0.2183239 22.028087 18.529370 4.605177 17.292190 14.128675 25.358909 4.9110198 14.56225723
10 5.645424 27.4407802 -6.042864 19.590363 31.644096 19.598961 8.711616 23.571616 18.3513732 6.54801604
11 12.070018 9.1468211 4.517876 30.160520 24.221643 5.288788 10.507151 15.577213 14.0334183 12.13100612
12 27.538496 17.9630384 20.497124 -5.775552 20.540807 6.159340 25.448877 25.247641 9.6193851 10.99242701
13 15.965023 17.8969879 19.835614 14.196736 19.610066 28.095576 9.415734 9.630082 3.8778868 26.59477335
14 17.161732 11.7015122 24.685835 2.259748 6.507676 9.865445 15.568988 3.729432 2.6502777 10.24560963
15 6.995744 19.4949854 1.695210 17.426425 16.809986 5.154936 3.158622 -1.762946 8.2424098 13.54217649
16 19.535199 30.5746684 17.539226 25.719703 21.170067 18.498657 2.407530 22.258602 0.9934874 7.79544219
> colnames(d1)<-LETTERS[1:10]
> rownames(d1)<-letters[1:16]
> d1
A B C D E F G H I J
a 17.684231 5.9091398 29.393523 17.665501 8.304963 18.163065 8.959652 23.089938 -3.9883990 13.12684554
b 18.675728 10.3473793 26.059565 2.545609 -1.659018 21.345148 30.261759 23.553854 3.4317479 17.32135654
c 12.125573 21.9657012 15.034170 8.676911 20.105115 10.565047 8.201619 12.353970 26.1375359 0.62166426
d 9.372023 15.3897896 16.929506 28.581541 25.747908 32.816887 7.443626 8.959282 20.0692387 19.79722344
e 17.847100 19.2369754 10.407307 13.428722 17.134837 20.769765 14.791403 12.582771 17.1990071 20.16810547
f -1.543648 24.6462807 -0.296402 15.813303 2.634627 27.936793 3.750213 18.030885 3.5227275 14.10952797
g 18.040788 7.8453726 27.141871 7.632188 13.436925 18.376340 16.379348 30.440019 34.2463062 0.04537342
h 10.790527 0.5749008 13.206408 15.223630 6.722805 10.536373 2.401958 12.447862 4.6166903 17.38718338
i 10.726722 0.2183239 22.028087 18.529370 4.605177 17.292190 14.128675 25.358909 4.9110198 14.56225723
j 5.645424 27.4407802 -6.042864 19.590363 31.644096 19.598961 8.711616 23.571616 18.3513732 6.54801604
k 12.070018 9.1468211 4.517876 30.160520 24.221643 5.288788 10.507151 15.577213 14.0334183 12.13100612
l 27.538496 17.9630384 20.497124 -5.775552 20.540807 6.159340 25.448877 25.247641 9.6193851 10.99242701
m 15.965023 17.8969879 19.835614 14.196736 19.610066 28.095576 9.415734 9.630082 3.8778868 26.59477335
n 17.161732 11.7015122 24.685835 2.259748 6.507676 9.865445 15.568988 3.729432 2.6502777 10.24560963
o 6.995744 19.4949854 1.695210 17.426425 16.809986 5.154936 3.158622 -1.762946 8.2424098 13.54217649
p 19.535199 30.5746684 17.539226 25.719703 21.170067 18.498657 2.407530 22.258602 0.9934874 7.79544219
> d2<-data.frame(matrix(rnorm(160,14,5),ncol=10))
> rownames(d2)<-letters[1:16]
> colnames(d2)<-LETTERS[1:10]
> d2
A B C D E F G H I J
a 11.561807 26.417750 17.933979 14.485521 22.95666 10.499621 11.924895 16.884252 18.860425 13.412658
b 15.515756 16.006825 15.504747 13.616332 17.36134 11.162992 11.702122 3.434598 17.779350 14.191049
c 12.790130 15.075886 20.551120 18.959753 12.95349 12.693030 10.037530 15.304548 11.858572 19.974028
d 11.591332 4.921438 17.992169 9.703746 14.06091 8.680575 8.207304 19.735636 10.430376 15.719792
e 9.040986 9.441303 18.254302 12.592102 21.67058 13.468157 17.554450 14.073968 13.048080 12.354635
f 12.596754 13.754777 11.782160 24.331236 14.38646 17.855519 20.338009 12.441304 15.999324 22.354290
g 17.165087 11.973063 11.766126 10.942235 14.39219 27.737018 13.284245 9.219019 9.110775 9.409709
h 7.800908 19.651909 14.066525 15.578064 10.10369 13.580326 11.424855 16.367069 14.918685 13.560963
i 22.821570 18.077324 6.819271 17.301467 14.83280 16.717838 21.414456 6.430680 3.248447 20.601469
j 13.881601 14.382088 10.853702 5.388988 15.32662 17.764306 13.187055 14.821405 10.885167 22.653931
k 14.999602 21.268737 15.217609 3.326870 18.45390 9.956629 14.208546 9.645674 10.172803 24.812980
l 20.735964 15.870605 19.291811 14.344728 11.66056 19.005599 16.415199 21.966645 16.321547 12.421338
m 14.180367 13.145480 18.156744 18.339109 17.79187 16.280263 8.099364 17.232988 16.611411 11.124519
n 18.122906 11.488936 14.526059 2.549779 10.79132 6.828748 10.682131 15.786848 14.048969 6.968218
o 5.486641 16.717611 5.291435 13.249049 17.13836 12.673476 10.826751 14.511965 11.797369 25.339299
p 16.404751 11.474070 17.226235 12.656091 15.24165 17.208846 10.490185 10.623666 19.997448 10.145730
02
色彩搭配选择
> Color<-colorRampPalette(rev(brewer.pal(n=9,name="RdBu")))(160)
> Color
[1] "#4575B4" "#4979B6" "#4E7DB8" "#5282BB" "#5786BD" "#5C8BBF" "#608FC2" "#6594C4" "#6998C6" "#6E9DC9" "#73A1CB" "#77A6CE" "#7CAAD0" "#80AFD2" "#85B3D5" "#8AB8D7"
[17] "#8EBCD9" "#93C0DB" "#98C3DD" "#9CC6DF" "#A1CAE1" "#A6CDE2" "#ABD0E4" "#B0D3E6" "#B4D6E8" "#B9D9E9" "#BEDCEB" "#C3E0ED" "#C8E3EF" "#CCE6F0" "#D1E9F2" "#D6ECF4"
[33] "#DBEFF6" "#E0F3F7" "#E1F3F4" "#E3F4F1" "#E5F5ED" "#E7F5EA" "#E9F6E6" "#EBF7E3" "#EDF8DF" "#EFF8DC" "#F0F9D8" "#F2FAD5" "#F4FBD2" "#F6FBCE" "#F8FCCB" "#FAFDC7"
[49] "#FCFDC4" "#FEFEC0" "#FEFEBD" "#FEFCBA" "#FEFAB7" "#FEF8B5" "#FEF6B2" "#FEF4AF" "#FEF2AC" "#FEF0A9" "#FEEFA6" "#FEEDA3" "#FEEBA1" "#FEE99E" "#FEE79B" "#FEE598"
[65] "#FEE395" "#FEE192" "#FEDF8F" "#FDDA8C" "#FDD589" "#FDD085" "#FDCB82" "#FDC67F" "#FDC17B" "#FDBC78" "#FDB775" "#FCB271" "#FCAD6E" "#FCA86B" "#FCA367" "#FC9E64"
[81] "#FC9961" "#FC945D" "#FC8F5A" "#FA8A57" "#F88454" "#F67E51" "#F4794E" "#F1734B" "#EF6D48" "#ED6845" "#EB6242" "#E85D3F" "#E6573C" "#E45139" "#E24C36" "#DF4633"
[97] "#DD4030" "#DB3B2D" "#D9352A" "#D73027"
03
将值映射到颜色
> breaks<-seq(min(unlist(c(df1,df2))),max(unlist(c(df1,df2))),length.out=160)> breaks [1] -6.04286449 -5.78947348 -5.53608247 -5.28269146 -5.02930045 -4.77590944 -4.52251843 -4.26912742 -4.01573641 -3.76234540 -3.50895439 -3.25556338 -3.00217237 [14] -2.74878135 -2.49539034 -2.24199933 -1.98860832 -1.73521731 -1.48182630 -1.22843529 -0.97504428 -0.72165327 -0.46826226 -0.21487125 0.03851976 0.29191077 [27] 0.54530178 0.79869279 1.05208380 1.30547481 1.55886582 1.81225683 2.06564784 2.31903886 2.57242987 2.82582088 3.07921189 3.33260290 3.58599391 [40] 3.83938492 4.09277593 4.34616694 4.59955795 4.85294896 5.10633997 5.35973098 5.61312199 5.86651300 6.11990401 6.37329502 6.62668603 6.88007704 [53] 7.13346805 7.38685906 7.64025008 7.89364109 8.14703210 8.40042311 8.65381412 8.90720513 9.16059614 9.41398715 9.66737816 9.92076917 10.17416018 [66] 10.42755119 10.68094220 10.93433321 11.18772422 11.44111523 11.69450624 11.94789725 12.20128826 12.45467927 12.70807029 12.96146130 13.21485231 13.46824332 [79] 13.72163433 13.97502534 14.22841635 14.48180736 14.73519837 14.98858938 15.24198039 15.49537140 15.74876241 16.00215342 16.25554443 16.50893544 16.76232645 [92] 17.01571746 17.26910847 17.52249948 17.77589050 18.02928151 18.28267252 18.53606353 18.78945454 19.04284555 19.29623656 19.54962757 19.80301858 20.05640959[105] 20.30980060 20.56319161 20.81658262 21.06997363 21.32336464 21.57675565 21.83014666 22.08353767 22.33692868 22.59031969 22.84371070 23.09710172 23.35049273[118] 23.60388374 23.85727475 24.11066576 24.36405677 24.61744778 24.87083879 25.12422980 25.37762081 25.63101182 25.88440283 26.13779384 26.39118485 26.64457586[131] 26.89796687 27.15135788 27.40474889 27.65813990 27.91153091 28.16492193 28.41831294 28.67170395 28.92509496 29.17848597 29.43187698 29.68526799 29.93865900[144] 30.19205001 30.44544102 30.69883203 30.95222304 31.20561405 31.45900506 31.71239607 31.96578708 32.21917809 32.47256910 32.72596011 32.97935112 33.23274214[157] 33.48613315 33.73952416 33.99291517 34.24630618
04
热力图绘制与排布组合
> p1<-pheatmap(d1,color=Color,breaks=breaks,border_color="white",legend=TRUE)
> p2<-pheatmap(d2,color=Color,breaks=breaks,border_color="black",legend=TRUE)
>plot_grid(p1$gtable,p2$gtable,align='vh',labels=c("A","B"),ncol=2)
小结
1、pheatmap包的详细教程
http://127.0.0.1:16592/library/pheatmap/html/pheatmap.html
2、cowplot包的使用手册
https://cran.r-project.org/web/packages/cowplot/index.html
3、ggplot2包的参考手册
https://cran.r-project.org/web/packages/ggplot2/index.html
4、RColorBrewer配色方案
https://cran.r-project.org/web/packages/RColorBrewer/index.html
- IE7下元素的 'padding-top' 遇到 'clear' 特性在某些情况下复制到 'padding-bottom'
- IE7下元素的 'padding-top' 遇到 'clear' 特性在某些情况下复制到 'padding-bottom'
- ARM处理器:开放者的逆袭
- 从5个方面对比微信小程序和App
- ActiveMQ笔记(7):如何清理无效的延时消息?
- JS魔法堂:再识Bitwise Operation & Bitwise Shift
- Hadoop(十三)分析MapReduce程序
- mac机上搭建php56/nginx 1.8.x/thinkphp 3.2.x/gearman扩展/seaslog扩展/redis扩展环境
- 基础野:细说无符号整数
- Ubuntu12.04安装QQ for Linux
- 树莓派:最好的安排
- idea 高级调试技巧
- JS魔法堂:彻底理解0.1 + 0.2 === 0.30000000000000004的背后
- mybatis: 利用多数据源实现分库存储
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- vue3.0的 v-model 为啥不好用了?
- SHELL命令分组统计
- 一行代码实现display"过渡动画"原理
- 3D星空图
- shading-jdbc 4.1.1 + tk.mybatis + pagehelper 1.3.x +spring boot 2.x 使用注意事项
- 用辗转相除法求两个正整数的最大公约数
- Js根据数组相同的值生成二维数组
- 顺序消息管道《Message Pipe》v1.0.2版本发布
- Ts安装及自动编译ts文件
- python 自动化测试(1):获取验证码图片,实现自动登录
- RocketMQ学习第一步之源码构建
- python 库学习之:openpyxl
- python 学习之:读取xml配置文件
- 我的C语言入门笔记~!
- 宜信OCR技术探索之版面分析业务实践|技术沙龙直播速记