运用 R语言 pheatmap 包绘制热图进阶部分

pheatmap包来显示行或列的分组信息

行或列的分组注释信息

在EXCEL中整理好样本和物种的注释信息,当然这个需要依据你的具体需求来确定。

对样本的注释信息,比如这里用到了采样环境,和样本分类

对样本的注释信息.png

对属水平物种的属于哪个门水平的注释,你可以用其他方式来区分或不做注释

物种属水平注释信息.png

注意:将上述的注释信息保存为文本文件(制表符格式),当然你可以保存为其他格式,但在R语言中需要使用不同的函数来将数据导入。

导入行或列的分组注释信息

在RStudio 中使用 read.table 函数来导入行或列的分组注释信息

annotation_row<-read.table("phylum.txt",header=T,sep="\t",row.names=1)
# 这些需要将导入的注释信息转化为data.frame 格式
annotation_row <- as.data.frame(annotation_row) 
annotation_col<-read.table("样品信息.txt",header=T,sep="\t",row.names=1)
annotation_col <- as.data.frame(annotation_col)
# 查看行或列注释信息的导入情况,我比较喜欢view,也可以使用head函数查看前6行。
View(annotation_col)
View(annotation_row)
样本的注释信息.png

物种属水平注释信息.png

出图查看注释情况

注意:data.1是pheatmap包基础篇中介绍过使用z-score中心化和标准化的数据;
具体可以参考上一期内容

# data.1是pheatmap包基础篇中介绍过使用z-score中心化和标准化的数据
# annotation_col = annotation_col #添加列注释信息
# annotation_row = annotation_row 添加行注释信息
# 这里注意横纵的注释信息要对好,别错了
pheatmap(data.1, annotation_col = annotation_col, annotation_row = annotation_row,
         cellwidth = 20, cellheight = 15)
注释后出图.png

常见报错
Error in names(annotation_colors[[names(annotation)[i]]]) <- l :
'names' attribute [2] must be the same length as the vector [1]
如果出图出现这个报错,一般是横纵注释信息数量不一致,应该是你横纵注释信息放错位置了,可以调换一下顺序。

修改注释信息及颜色参数

使用annotation_legend = FALSE 命令去掉注释图例

pheatmap(data.1, annotation_col = annotation_col, annotation_row = annotation_row,
         cellwidth = 20, cellheight = 15,
         annotation_legend = FALSE)
注释图例去除后.png

自定注释信息的颜色列表

ann_colors = list(
   species= c("white", "tomato4"),
   environment = c(X1 = "slateblue3", X2 = "red2"),
  phylum = c(phylum1 = "#7D26CD", phylum2 = "#E7298A", phylum3 = "#66A61E")
)
head(ann_colors)

使用 annotation_colors 设定注释信息的颜色

# annotation_colors设定注释信息的颜色
pheatmap(data.1, annotation_col = annotation_col, 
         annotation_row = annotation_row, 
         annotation_colors = ann_colors,
         cellwidth = 20, cellheight = 15)
注释颜色修改.png

这是注释颜色,好像不是特别好看,根据自己美感慢慢调节

annotation_colors = ann_colors[1] 只修改species的注释颜色,其他保持不变

pheatmap(data.1, annotation_col = annotation_col, 
         annotation_row = annotation_row, 
         annotation_colors = ann_colors[1],
         cellwidth = 20, cellheight = 15)
指定修改注释颜色.png

将热图分隔开

使用 cutree_rows, cutree_cols 函数可以根据行列的聚类数将热图分隔开

pheatmap(data.1,cutree_rows=3,cutree_cols=3,
         cellwidth = 20, cellheight = 15)
根据行列的聚类数将热图分隔开.png

使用gaps_row 和gaps_col 函数可以在指定位置处添加gap

# gaps_row = c(7, 17)参数在第7和17行处添加gap, 同时对行不进行聚类
pheatmap(data.1, annotation_col = annotation_col,
         cluster_rows = FALSE, gaps_row = c(7, 17),
         cellwidth = 20, cellheight = 15)
指定位置添加GAP.png

对行和列都不进行聚类,然后自定义划分行和列的gap

# 对行和列都不聚类,自定义划分行和列的gap
pheatmap(data.1, annotation_col = annotation_col,
         annotation_row = annotation_row, 
         cluster_rows = FALSE, cluster_cols = FALSE, 
         gaps_row = c(12, 21), gaps_col = c(5),
         cellwidth = 20, cellheight = 15)

自定义划分行和列的gap.png

注意:红色框不是r生成的,而是截图后手动添加,为了突出自定义的行和列

自定义行列标签名

自定义行的标签名

labels_row = c("genus1", "genus2", "genus3", "genus4", " ", " ", " ", " ", " ", " ", 
               " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
               " ", " ", " ", " "," "," ", " ", "genus26", "genus27", "genus28")

使用labels_row参数来添加行标签

#  使用labels_row参数来添加行标签,但是最好把行的聚类给去除
pheatmap(data.1, annotation_col = annotation_col, labels_row = labels_row,
         cluster_rows = FALSE,
         cellwidth = 20, cellheight = 15)
修改横坐标名称.png

使用filename 参数输出图片进行保存为pdf

pheatmap(data.1, annotation_col = annotation_col, 
                  annotation_row = annotation_row, 
                  annotation_colors = ann_colors[1],
                  cellwidth = 20, cellheight = 15,
                  filename = "data.pdf")

将热图的结果,按照聚类后的顺序进行输出

result =pheatmap(data.1, annotation_col = annotation_col, 
                  annotation_row = annotation_row, 
                  annotation_colors = ann_colors[1],
                  cellwidth = 20, cellheight = 15)
#  简要查看热图对象的信息
> summary(result)
查看热图对象.png

将热图的结果,按照聚类后的顺序进行输出

order_row = result$tree_row$order           #记录热图聚类后的行排序
order_col = result$tree_col$order           #记录热图聚类后的列排序
data.2 = data.frame(data[order_row,
                         order_col])        # 按照热图聚类后的顺序,重新排列原始数据
data.2 = data.frame(rownames(data.2),
                    data.2,check.names =F)  # 将物种属名的行名加到表格数据中
colnames(data.2)[1] = "genus" 
write.table(data.2,file="genus聚类后数据.txt",row.names=FALSE,
            quote = FALSE,sep='\t')         #输出结果,保存到当前工作目录
热图聚类后处理后的排序.png

运用R语言 pheatmap 包绘制热图进阶部分的内容就到这结束了。

如有不足或错误之处,请批评指正。
有什么不明白的也欢迎留言讨论。
感谢你的阅读!!!

欢迎关注微信公众号:fafu 生信 小蘑菇

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容