美文网首页R语言
【R画图学习1】普通热图和环形热图

【R画图学习1】普通热图和环形热图

作者: jjjscuedu | 来源:发表于2022-10-05 21:35 被阅读0次

因为一直没有认真学习过R,都是用到啥去查找啥的,所以每次画图总觉得力不从心。最近加了个群,准备跟着群主大咖认真系统的学习一些常见图形。

今天就学习一下我们最常用的普通热图以及环形热图的画法。

这个是我们今天用的测试数据:

测试数据一

普通热图还是用常用的pheatmap包:

library(pheatmap)

data <- as.matrix(read.table("data.txt",row.names = 1,header = T,sep = "\t")) 

pheatmap(data) //下面就是默认的色系画出的图

其它重要的参数设置:

1. scale="row" //设置是按行或者列标准化

比如下面就是设置了按行进行标准化

pheatmap(data,scale="row")

2. cluster_rows=F,cluster_cols=F   //这2个参数设置要不要对行或者列进行聚类

fontsize_row=15,fontsize_col=20,angle_col=315  //这几个参数则是设置行名,列名的大小和角度

pheatmap(data,scale="row",cluster_rows=F,cluster_cols=F,fontsize_row=15,fontsize_col=20,angle_col=315)

3. annotation_row,annotation_col  //添加注释文件

annotation_col <- data.frame(Sample=factor(c("A","B","C","D","E","F","G","H","I","J")))

rownames(annotation_col)<-colnames(data)

annotation_row <- data.frame(CellType=rep(c("A","B"),9))

rownames(annotation_row)<-rownames(data)

annotation_col <- data.frame(Sample=factor(c("A","B","C","D","E","F","G","H","I","J")),Sex=rep(c("F","M"),5))

rownames(annotation_col)<-colnames(data)

pheatmap(data,annotation_col=annotation_col)

3. ann_colors //自定义annoation的颜色

annotation_col <- data.frame(Sample=factor(c("A","B","C","D","E","F","G","H","I","J")),Sex=rep(c("F","M"),5))

rownames(annotation_col)<-colnames(data)

annotation_row <- data.frame(CellType=rep(c("T1","T2"),9))

rownames(annotation_row)<-rownames(data)

ann_colors = list(Sex = c(F = "red", M = "#016D06"),CellType= c(T1 = "#1B9E77", T2 = "#D95F02"),Sample = c(A = "#65B99F", B = "#F08961", C = "#8A9BC3", D = "#DA85B5", E = "#A1CC56",F = "#F5D239", G = "#7CC07B", H = "#BAABD0", I = "#3766A4", J = "#DF3078"))

pheatmap(data,annotation_col=annotation_col,annotation_row=annotation_row,annotation_colors=ann_colors)

4. 当然还有一些其他重要的参数:

color  //可以自己设置heatmap的色系

cellwidth=30,cellheight=14  //设置单元格的宽度和高度

border_color=F  //设置显示不显示边界线

display_numbers=T  //设置显示heatmap上面的数字

例如下图是对参数进行一系列调整的结果:

pheatmap(data,annotation_col=annotation_col,annotation_row=annotation_row,annotation_colors=ann_colors,fontsize_col=8,fontsize_row=10,angle_col=45,cellwidth=30,cellheight=14,display_numbers=T,border_color=F,color=colorRampPalette(c("#FDEBEA","#D5281F"))(100))

环形热图我见paper中也有用的,但是总觉得没普通的好用,并且如果变量太多的时候还不够直观。主要是基于ggtree和gheatmap实现的。

library(ggtree)

library(ggplot2)

data <- as.matrix(read.table("data.txt",row.names = 1,header = T,sep = "\t"))

df <- hclust(dist(data))

p1 <- ggtree(df)

gheatmap(p1,data)

p2 <- ggtree(df,layout = "circular")

p3 <- rotate_tree(p2,100) //设置旋转角度

gheatmap(p3 + geom_tiplab(offset = 13),data,

        width = 1.5,    //热图的宽度

        low = "#FDEBEA",

        high = "#D5281F",  //low和high主要设置热图的色系

        font.size = 3,

        colnames_position = "top",    

        colnames_offset_y = 2.5,    //调整开口的大小

        hjust = 0     //调整列名和顶部的距离

        ) +

theme(legend.position = "right")

相关文章

网友评论

    本文标题:【R画图学习1】普通热图和环形热图

    本文链接:https://www.haomeiwen.com/subject/eodpartx.html