pheatmap包学习
2019-04-09 本文已影响38人
drlee_fc74
pheatmap
pheatmap热图绘制
加载所需要的包
library(pheatmap)
library(tidyverse)
## ── Attaching packages ──────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 2.2.1 ✔ purrr 0.2.4
## ✔ tibble 1.4.2 ✔ dplyr 0.7.4
## ✔ tidyr 0.8.0 ✔ stringr 1.3.0
## ✔ readr 1.1.1 ✔ forcats 0.3.0
## ── Conflicts ─────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
读入数据
mRNA <- read.csv("mRNA.csv", row.names = 1)
查看数据
dim(mRNA)
## [1] 10 10
mRNA[1:5,1:5]
## TCGA.3X.AAV9.01A TCGA.3X.AAVA.01A TCGA.3X.AAVB.01A
## EVX1 3.166316 12.398085 0.2020127
## PSORS1C3 40.911014 19.686677 112.0638554
## KLK8 62.634384 0.000000 0.0000000
## ZNF880 43.752488 52.678184 68.0266351
## KLK10 86.754056 2.724418 121.4368925
## TCGA.3X.AAVC.01A TCGA.3X.AAVE.01A
## EVX1 3.554979 2.748956
## PSORS1C3 58.395365 29.313010
## KLK8 3.592886 0.000000
## ZNF880 25.269561 25.993532
## KLK10 24.103295 14.008254
最初原始的热图绘制
pheatmap(mRNA)
image.png
热图颜色的调整
- color 进行颜色调整 默认为colorRampPalette(rev(brewer.pal(n = 7, name = “RdYlBu”)))(100) 括号中的100代表渐变的时候图例的区分度 breaks 改变图例的范围。如果颜色设定为100个区分,breaks最好也有100个。
- 通俗点儿说就是,通过color和break制定颜色的分布范围,然后数据集中的数值在分布范围中找相同的颜色再进行填充。
- 这样可以让两个不同的热图使用同一个颜色分布的图例
pheatmap(mRNA, color = colorRampPalette(c("#3C7DAF", "#EAF4F1","#FFFCBA", "#E83140"))(100))
image.png
pheatmap(mRNA, color = colorRampPalette(c("#3C7DAF", "#EAF4F1","#FFFCBA", "#E83140"))(100),
breaks = seq(-10,150,length.out = 100))
image.png
列名和行名的改变
- show_rownames/show_colnames 是否去掉行名和列名
- labels_row/labels_col 自定义行名和列名
pheatmap(mRNA, show_rownames = F, show_colnames = F)
image.png
labels_row <- str_c("G",1:10)
pheatmap(mRNA, labels_row = labels_row)
image.png
表达值的变换
- scale参数把数据集的数据按照中间值来进行数据变化。默认的为“none”,可以改为“row”或者“column”
pheatmap(mRNA, scale = "row")
image.png
pheatmap(mRNA, scale = "column")
image.png
单元格的改变
- border_color 改变单元格边框的颜色。默认为“grey60”.
- cellheight/cellwidth 改变单元格的高度和宽度。 默认为NA
pheatmap(mRNA, scale = "row",cellheight = 5, cellwidth = 10 ,border_color = "black")
image.png
聚类的调整
- cluster_cols/cluster_rows 是否显示聚类
- treeheight_row/treeheight_col 聚类中高度的调整,默认为50
- clustering_distance_rows/clustering_distance_cols 聚类排列的方式,可选’correlation’, ‘euclidean’(default), ‘maximum’, ‘manhattan’, ‘canberra’, ‘binary’, ‘minkowski’
- clustering_method 聚类方法的调整。可选的参数有 ‘ward’, ‘ward.D’, ‘ward.D2’, ‘single’, ‘complete’, ‘average’, ‘mcquitty’, ‘median’ or ‘centroid’。
- cutree_rows/cutree_cols 基于层次聚类,划分行的簇数,如果未聚集行,则忽略参数
pheatmap(mRNA, treeheight_col = 25, treeheight_row = 75)
image.png
pheatmap(mRNA, treeheight_col = 25, treeheight_row = 75, clustering_distance_col = "correlation")
image.png
pheatmap(mRNA, cutree_col = 2)
image.png
pheatmap(mRNA, gaps_col = 5)
image.png
一般可以做聚类,但是高度设置为0
对热图进行分割
- gaps_row/gaps_col 对热图进行分割,只有没有聚类的时候进行使用
- 参数中的数字代表从哪里进行分割
pheatmap(mRNA, cluster_rows = F, cluster_cols = F, gaps_row = 3, gaps_col = c(4,8))
image.png
相关分析
- method 各个样本之间的相关分析 可选“pearson” (default), “kendall”, or “spearman”
pheatmap(mRNA, methods = "kendall")
image.png
图例的显示与否
- legend 图例是否显示
- legend_breaks 对图例进行分割不按照默认的显示
- legend_labels 对分割的图例进行自定义标签
pheatmap(mRNA, legend = F)
image.png
pheatmap(mRNA, legend_breaks = c(0,100,120))
image.png
pheatmap(mRNA, legend_breaks = c(0,100,120), legend_labels = c("min", "median", "max"))
image.png
设置图的标题
pheatmap(mRNA, main = "example")
image.png
字体大小的调整
- fontsize 对所有字体进行调整
- fontsize_row/fontsize_col 对行/列的字体大小进行调整 默认值为10
pheatmap(mRNA, fontsize_col = 15, fontsize_row = 5)
image.png
网格中数字的显示
- display_numbers 是否显示数字
- number_format 数字的格式 “%.2f”代表小数点儿后两位; “%.1e”代表科学指数符号
- fontsize_number 显示数字的大小 默认为0.8 * fontsize即8
- number_colors 单元格中的颜色
pheatmap(mRNA, display_numbers = T, number_format = "%.1f", fontsize_number = 7, number_color = "black")
image.png
pheatmap(mRNA, display_numbers = matrix(ifelse(mRNA > 100, "*", ""), nrow(mRNA)))
image.png
添加注释
- 添加注释之前首先要定义注释
- annotation_row/annotation_col 定义注释的类别
- annotation_col 定义注释的颜色
- annotation_names_row/annotation_names_col 逻辑值是否显示注释的名字
- annotation_legend 是否显示**注释的图例
- drop_levels 逻辑值决定是否没有提到的水平显示在图例中
##定义列的注释
annotation_col <- data.frame(
Gender = factor(rep(c("F", "M"), 5)),
Type = factor(rep(str_c("G",1:5),2)))
##一定要记得数据框的行名
rownames(annotation_col) <- colnames(mRNA)
##定义行的注释
annotation_row <- data.frame(
module = factor(rep(c("grey60", "blue"),5)),
example = factor(rep(c("abv", "eqw"),5))
)
rownames(annotation_row) <- rownames(mRNA)
##定义注释的颜色.使用list进行定义
ann_colors <- list(
Gender = c(F = "#007C46", M = "#00D0D1"),
Type = c(G1 = "black", G2 = "white", G3 = "blue", G4 = "#A25BAA", G5 = "orange"),
module = c(grey60 = "black", blue = "orange"),
example = c(abv = "#007C46", eqw = "#00D0D1")
)
pheatmap(mRNA, annotation_col = annotation_col, annotation_row = annotation_row ,annotation_names_row = T, annotation_legend = T,
annotation_colors = ann_colors, annotation_names_col = F, gaps_row = 2)
image.png