热图教程-R语言ggcorrplot包绘制相关性热图
热图绘制

公众号链接:
热图是做分析时常用的展示方式,简单、直观、清晰。可以用来显示基因在不同样品中表达的高低、表观修饰水平的高低等。任何一个数值矩阵都可以通过合适的方式用热图展示。
本篇使用R的 ggplot2 包实现从原始数据读入到热图输出的过程,并在教程结束后提供一份封装好的命令行绘图工具,只需要提供矩阵,即可一键绘图。
上一篇讲述了Rstudio的使用作为R写作和编译环境的入门,后面的命令都可以拷贝到Rstudio中运行,或写成一个R脚本,使用 Rscript heatmap.r 运行。我们还提供了Bash的封装,在不修改R脚本的情况下,改变参数绘制出不同的图形。
绘图首先需要数据。通过生成一堆的向量,转换为矩阵,得到想要的数据。
注意:运算符的优先级。
Vector转为矩阵 (matrix),再转为数据框 ()。
虽然方法比较繁琐,但一个数值矩阵已经获得了。
还有另外2种获取数值矩阵的方式。
可以看到列名字中以数字开头的列都加了
X
。一般要尽量避免行或列名字以
数字开头
,会给后续分析带去一些困难;另外名字中出现的非字母、数字、下划线、点的字符都会被转为
点
,也需要注意,尽量只用字母、下划线和数字。
与上一步类似,只是改为文件名,不再赘述。
数据读入后,还需要一步格式转换。在使用ggplot2作图时,有一种长表格模式是最为常用的,尤其是数据不规则时,更应该使用 (这点,我们在讲解箱线图时再说)。
数据转换后就可以画图了,分解命令如下:
热图出来了,但有点不对劲,横轴重叠一起了。一个办法是调整图像的宽度,另一个是旋转横轴标记。
设置想要的颜色。
调整legend的位置。
调整背景和背景格线以及X轴、Y轴的标题。
合并以上命令,就得到了下面这个看似复杂的绘图命令。
图形出来了,就得考虑存储了,
至此,完成了简单的heatmap的绘图。但实际绘制时,经常会碰到由于数值变化很大,导致颜色过于集中,使得图的可读性下降很多。因此需要对数据进行一些处理,具体的下次再说。
Heatmap――热图那些事

注脚:
scale
标准化,根据每列或者行数据的均值标准化,主要是为了防止单个数据过大(过小),导致冷热色分布不明显的现象,可选row,column,none。
**key
是否需要图标以及图标大小,key=T或者F,keysize=1.5;
Colv=NA
表示不对行聚类,Rowv=NA不对列聚类
dendrogram
=‘column’or 'none'or'row' or"both"显示聚类树状图,
trace
,是否需要基准线(均值,方差之类的),trace="both","row" 或者"column"
指示图内的线, ='none'
cexCol=1,cexRow=1
设置xlab和ylab的字符大小
#col
,优化颜色:redgreen或者greenred, 调整配色,括号内表示这个配色区间分成多少格区分度;
breaks=seq
自己设置颜色分度breaks=seq(-5, 5, 1))
** labels,labCol调整每列的标记 labCol = NA,或者 labCol = c('Age', 'A', 'B', 'C'))
margins
调整画布边距; margins=c(5,5),
main
='Heatmap'增加标题。
注脚:
第一个参数是需要用pheatmap画图的数据
color: 设置颜色。精细程度按照括号内设置的数值来定
main: 标题名称
fontsize: 设置row的字体大小
scale: 设置归一化为正态分布,可选row,column,none。
border_color: 是否显示边框及边框的颜色,NA不显示,red显示红色。支持简单的颜色单词
na_col: 设置缺失值的颜色,支持简单颜色单词,一般设置为灰色就满好识别的。
cluster_rows&cluster_cols: 设置是否对行或者列进行聚类,按照实际需求设置。当缺失值较多的时候是无法进行聚类的。**一个解决办法是读取数据的时候不设置缺失值。
show_rownames&show_colnames: 是否显示行/列的名称
treeheight_row&treeheight_col: 当前面设置了聚类之后,两边会出现聚类的树,这个参数是设置树的高度的。
cellheight&cellwidth: 设置每个各自格的宽度和高度。
cutree_row&cutree_col: 是否根据聚类情况把树切开,可以设置切开的份数。
display_numbers: 设置是否显示每个单元格的值。
legend: 设置是否显示旁边的bar状图例。
filename: 设置输出文件的名字。可以设置的文件类型有:pdf,png,jpg,tiff,bmp。
优点:1、支持多种的颜色配置;2、支持样品和基因的双聚类;
缺点:基因名称显示似乎不太行,还在尝试,数据上限:2,500 rows and 300 columns;
操作参考-没有,慢慢摸索就好,简单易上手,似乎没有数据上限?
似乎全英,看着好累
这个工具看着也蛮好用的,操作参考也很详细,全中文参考: 重磅推荐,超详细热图在线绘制教程资料! - ,不过我不想注册,就没尝试
R语言ggcorrplot包绘制相关性热图

热图是科研论文中一种常见的可视化手段,而在转录组研究领域,我们常常需要分析一些基因与基因之间的相关性,来判断生物样本中是否存在共表达情况,以及共表达基因模块。除了基因集之间,其他方向,比如免疫细胞群体之间相关性,样本的相关性,也常常用相关性热图的形式进行展示。总而言之,往大了说,任何表征相关性的数值都可以用相关性热图来进行绘制。
常规热图示例
我们先来看看下面这张图,这是一篇发表在 PLoS Medicine (IF = 11.048) 上的文章图,来看 22 种免疫细胞群体之间的相关性,其中红色的颜色代表正相关,蓝色代表负相关。每一格的数字代表相关系数。这是一种经常会用到的图形,不同于常规热图。常规热图中的每行代表一个观察值,每列代表一个样本,而我们在本次教程中,将为大家带来更高级,也更美观的相关性热图。
相关性热图
Step 1: R 包安装和数据输入
首先是安装必须 R 包,在这里我们需要用到 ggcorplot 和 ggthemes 这两个R包。
然后我们读入R表达谱数据。
数据一共有 10 个样本和 20 个基因,每一行为一个基因,每一列为一个样本,我们需要看这 20 个基因在这 10 个样本中的共表达情况,也就是基因和基因之间的相关性。
Step 2: 相关性计算
为了表示基因与基因相关性,我们除了要计算它们的相关性系数,还需要计算体现其显著性的 P 值。
计算相关性系数并显示前 6 个基因之间的相关性。相关性系数大于 0 为正相关,小于 0 为负相关。
计算基因与基因之间的相关性 P 值,其中 P 小于 0.05 认为这两个基因之间相关性是显著的。
Step 3: 相关性热图绘制
使用 ggcorplot 绘制基因与基因之间相关性热图。
Step 4: 初级美化 Circle
美化第一步,我们将矩形热图改成圆形
是不是大家瞬间觉得眼前一亮?
Step 5: 中级美化 Clustering
虽然有所美观,但是,这样上面一张相关性热图还是存在问题的,大家是否发现热图中的点非常乱,让人没办法捕捉到其中的规律,不容易让人一眼抓住重点。所以,我们要对基因进行聚类。
这张热图,已经是非常漂亮了,放在文章中绝对让人眼睛一亮,正相关负相关基因清清楚楚。
Step 6: 高级美化 Triangle
当然,我们还可以进一步改善。因为相关性之间其实是有对称在的,左上角和右下角的图其实是一样的,这样绘制比较占版面。只绘制左上角的热图,可以让我们的图看起来没有那么臃肿。
Step 7: 终级美化 Label
那么如何显示相关性强弱呢,虽然颜色和点的大小可以看出来,但是毕竟没有那么直观。所以我们将相关性系数加上,并更改热图颜色。
这样基因相关性热图就相当完美了,可以直接放在文章图中,而且比 PLoS Medicine 那篇文章看起来更漂亮呢。
Step 8: 究级美化 Omit
不过,如果我们想知道哪些基因显著性是小于 0.05 的呢,虽然颜色和点的大小以及相关性系数可以看出来,但是如果被老板们问起,模棱两可的回答,可是相当危险的哦。所以,我们把显著性p值加上,并且直接隐藏 P 小于 0.05 的基因。
-
果盘绘画图片大全简单创作方法快速制作技巧2024-01-02 16:57:54
-
小年插画图片创作方法快速制作技巧2024-01-02 16:57:20
-
小年绘画作品制作技巧2024-01-02 16:55:45
-
小年插画图片创作方法快速制作技巧2024-01-02 16:55:02
-
立春插画图片如何制作2024-01-02 16:54:19
-
立春插画图片创作方法快速制作技巧2024-01-02 16:53:32






扫描二维码添加客服微信
扫描二维码关注