R语言可视化做图

R语言作图——Heatmap(热图)

2022-06-29  本文已影响0人  生信了

原创:黄小仙

很早之前就有小伙伴在后台发消息问有没有R语言画热图的教程,今天小仙终于给安排上了。画了这么多图之后小仙发现,用R画出图并不难,CRAN上有各种R包的资源,同一种图可以有好几种画法。
但是对于注重颜值的朋友来说,想把画出的图形调整成理想的样子,恐怕还是要经历一番折磨人的摸索过程…小仙今天是用pheatmap包来画heatmap,从输入数据到画出图可能只需要几分钟,但是后续的调整折腾了几个小时…

Step1. 绘图数据的准备
首先还是要把你想要绘图的数据调整成R语言可以识别的格式, 在excel中保存成csv。
数据的格式如下图:

作图数据

Step2. 绘图数据的读取

data <- read.csv(“your file path”, header = T) 

Step3.绘图所需package的调用

library(pheatmap)  ## 调用之前先安装install.packages("pheatmap")

Step4.绘图

df <- data[,-c(11,12)]
bk <- c(seq(-3, 2,by = 0.01))
pheatmap(df,
         cluster_cols = F, cluster_rows = F, scale = "none",
         treeheight_col = 0, treeheight_row = 0,
         display_numbers = F,
         border_color = "black",
         color = colorRampPalette(c("blue","white", "red"))(length(bk)))

调整行标签
得到上图之后,小仙发现行名是"1", "2", "3"... ,并不是想要的"Group 1","Group 2", "Group 3"...
原来需要将df的rownames重新赋值一下

rownames(df) <- data$Group
rownames(df)
pheatmap(df,
         cluster_cols = F, cluster_rows = F, scale = "none",
         treeheight_col = 0, treeheight_row = 0,
         display_numbers = F,
         border_color = "black",
         color = colorRampPalette(c("blue","white", "red"))(length(bk)))

添加行注释

很多时候数据不只一列标签,在画热图的时候除了行名或者列名之外,还要添加注释标签

annotation_row = data.frame(Class = factor(data$Class))
rownames(annotation_row) <- data$Group
pheatmap(df,
         cluster_cols = F, cluster_rows = F, scale = "none",
         treeheight_col = 0, treeheight_row = 0,
         annotation_legend = T,
         display_numbers = F,
         annotation_row = annotation_row,
         border_color = "black",
         color = colorRampPalette(c("blue","white", "red"))(length(bk)))

调整热图色块和行注释的颜色

mycolors <- c("#66C2A5","#FC8D62","#E78AC3")
names(mycolors) <- unique(annotation_row$Class)
mycolors <- list(Class = mycolors)

pheatmap(df,
         cluster_cols = F, cluster_rows = F, scale = "none",
         treeheight_col = 0, treeheight_row = 0,
         annotation_legend = T,
         display_numbers = F,
         annotation_row = annotation_row,
         annotation_colors = mycolors,
         border_color = "black",
         color = colorRampPalette(c("navy", "white", "firebrick3"))(length(bk)))

采用默认颜色

如果希望使用pheatmap包默认的色块颜色,只要将以下的语句删掉就可以。

color = colorRampPalette(c("navy", "white", "firebrick3"))(length(bk))
上一篇下一篇

猜你喜欢

热点阅读