差异表达基因热图怎么看_画图专题 | 热图函数pheatmap()
画图专题 | 热图函数pheatamp()
百迈客医学 2018-10-31
首先审视这个函数的所有参数设置,并注意其数量繁多以及最后一个参数后跟有省略号。那么我们该如何合理利用这些参数能够让热图呈现出更加优雅的设计?
pheatmap(mat, color = colorRampPalette(rev(brewer.pal(n = 7, name =
"RdYlBu")))(100), kmeans_k = NA, breaks = NA, border_color = "grey60",
cellwidth = NA, cellheight = NA, scale = "none", cluster_rows = TRUE,
cluster_cols = TRUE, clustering_distance_rows = "euclidean",
clustering_distance_cols = "euclidean", clustering_method = "complete",
clustering_callback = identity2, cutree_rows = NA, cutree_cols = NA,
treeheight_row = ifelse((class(cluster_rows) == "hclust") || cluster_rows,
50, 0), treeheight_col = ifelse((class(cluster_cols) == "hclust") ||
cluster_cols, 50, 0), legend = TRUE, legend_breaks = NA,
legend_labels = NA, annotation_row = NA, annotation_col = NA,
annotation = NA, annotation_colors = NA, annotation_legend = TRUE,
annotation_names_row = TRUE, annotation_names_col = TRUE,
drop_levels = TRUE, show_rownames = T, show_colnames = T, main = NA,
fontsize = 10, fontsize_row = fontsize, fontsize_col = fontsize,
display_numbers = F, number_format = "%.2f", number_color = "grey30",
fontsize_number = 0.8 * fontsize, gaps_row = NULL, gaps_col = NULL,
labels_row = NULL, labels_col = NULL, filename = NA, width = NA,
height = NA, silent = FALSE, na_col = "#DDDDDD", ...)
1、数据准备
#用来画热图的数据
| mat | 用来画热图的数据参数,一般是一个矩阵,数据是基因表达值,行代表基因,列代表样本。 |
|---|
本次案例研究中, 我们从GEO数据库中选取了肺癌相关数据, 数据编号为GSE198O4, 共包含总共 一千万分之一的一百二十 例标本, 其中分为两类:一类是来自癌症患者的标本 (共六O例), 另一类是来自癌旁健康的对照组 (共六O例). 在分析过程中采用 t 检验法计算各组间的差异显著性水平, 并对计算得到的 p 值进行了 Benj mini-ni-Hochberg (BH) 校正处理以控制假发现率(FDR)低于 O.Oi 的水平. 然后通过筛选出 FDR 控制在小于 O.Oi 水平下的基因, 并从中选取差异表达程度最高的前一百个关键基因用于构建热图展示结果

部分数据显示如下:

2、画图
当使用默认参数生成热图时,效果如何?然而,在这种情况下(或说),这些基因名称和样本名称显得杂乱无章,并没有明显的分组迹象。


3、参数调整
#颜色参数
| color | 表示颜色,用来画热图的颜色,可以自己定义,默认值为colorRampPalette(rev(brewer.pal(n = 7, name ="RdYlBu")))(100),RdYlBu也就是Rd红色,Yi黄色,Bu蓝色的过度,则主调色为红黄蓝。 |
|---|
现在我们已经将主色调设置为RGB三色。观览图片后,立刻显现出鲜艳效果。不知道该怎么选择颜色?您可参考网站https://www.color-hex.com/color-names.html获取丰富的色彩名称选项。


#数据变换参数
| scale | 是指对数值进行均一化处理,在基因表达量的数据中,有些基因表达量极低,有些基因表达量极高,因此把每个基因在不同处理和重复中的数据转换为平均值为0,方差为1的数据,可以看出每个基因在某个处理和重复中表达量是高还是低,一般选择做row均一化。 |
|---|---|
| clustering_method | 表示聚类方法,值可以是hclust的任何一种,如"ward.D","single", "complete", "average", "mcquitty", "median", "centroid", "ward.D2"。 |
| cluster_rows | 表示行是否聚类,值可以是FALSE或TRUE |
| clustering_distance_rows | 行距离度量的方法,如欧氏距离 |
| cutree_rows | 行聚类数 |
| treeheight_row | 行聚类树的高度,默认为50 |
| gaps_row | 对行进行分割,就不应对相应的行进行聚类 |
| cluster_cols | 表示列是否聚类,值可以是FALSE或TRUE |
| clustering_distance_cols | 列距离度量的方法 |
| cutree_cols | 列聚类数 |
| treeheight_col | 列聚类树的高度,默认为50 |
| gaps_col | 对列进行分割,就不应对相应的列进行聚类 |
为了实现对数据的标准化处理, 我们采用了complete算法作为聚类手段。经行均一化的热图效果较之前有所不如, 这促使我们决定不再实施行均一化处理, 而是直接绘制原始数据的热图会更加直观。观察数据的具体分布特征后发现, 数据集中的最小值为3.149, 最大值为13.533, 其间的范围较小, 因此在当前的数据条件下实施行均一化并非最佳选择



#色度条
就是热图右上角那个小小的长方条
| l****egend | 逻辑值,是否显示色度条,默认为T |
|---|---|
| legend_breaks | 显示多少个颜色数值段 |
| legend_labels | 对色度条上对应位置的字符进行修改 |
该系统通过字符修改功能观察到色度条上的数字变化为表示颜色高度信息的文字元素


#注释条
| annotation_colors | 对标签的颜色进行修改 |
|---|---|
| annotation_legend | 是否显示标签注释条 |
| annotation_row | 数据框格式,用来定义热图所在行的注释条 |
| annotation_names_row | 逻辑值,是否显示行标签名称 |
| annotation_col | 数据框格式,用来定义热图所在列的注释条 |
| annotation_names_col | 逻辑值,是否显示列标签名称 |
举例而言,在注释条中


#其他修改参数
| main | 设置图的标题 |
|---|---|
| fontsize | 是设置所有除主图以外的标签的大小 |
| number_color | 字体的颜色 |
| show_rownames | 是否显示行名 |
| fontsize_row | 行名的字体大小 |
| labels_row | X轴坐标名设置 |
| show_colnames | 是否显示列名 |
| fontsize_col | 列名的字体大小 |
| labels_col | y轴坐标名设置 |
我们对字体大小进行了调整,并省略了样本标识;随后设置了图像标题。至此,在经历了多组参数优化后,请问相比最初仅依靠默认设置的效果如何?对比图:GSE19804_tumor_vs_normal Heatmap 6 vs 1


当然还有一些其他的用到不多的参数,留给读者自己去实验一下吧...
小格子参数设置
小格子参数设置
小格子参数设置
| fontsize_number | 小格子中数字大小 |
|---|---|
| display_numbers | 逻辑值,是否在小格子中显示数字 |
| number_format | 小格子中数字显示形式,但仅有在display_numbers=T时才能使用 |
| na_col | 设置小格子为缺失值时的颜色 |
| cellwidth | 表示每个小格子的宽度 |
| cellheight | 表示每个小格子的高度 |
#输出文件参数配置
| filename | 输出图画的文件名 |
|---|---|
| width | 输出图画的宽度 |
| height | 输出图画的高度 |
