热图就是使用颜色来表示数据相关性的图。能绘制热图的R包很多,今天我们来介绍pheatmap包,这个包的特点是简单易学,图片精美。
废话不多说,我们先导入数据和R包
library(pheatmap)
bc<-read.csv("E:/r/test/heatmap.csv",sep=',',header=TRUE)
这是一个西红柿的RNA测序数据(公众号回复:热图数据,可以获得数据),共有20行和20列,这个数据没有列名,我们给它加上列名,
dput(names(bc))
row.names(bc)<-dput(names(bc))
数据成如下格式后我们开始绘图
先来一个默认的简单的图
pheatmap(bc)
有时候行列数据指标相差太大,我们需要对数据进行标准化,才好比较,scale参数可以对行列进行归一化,可选"none", “row”, “column”
pheatmap(bc, scale = "row")
参数clustering_method可以设定不同聚类方法,默认为"complete",其他的方法还有’ward’, ‘ward.D’, ‘ward.D2’, ‘single’, ‘average’, ‘mcquitty’, ‘median’ or ‘centroid’
pheatmap(bc,scale = "row", clustering_method = "average")
如果不想显示图例,可以
pheatmap(bc, legend = FALSE) #不画图例
Pheatmap包还支持自己指定颜色
pheatmap(bc, color = colorRampPalette(c("navy", "white", "firebrick3"))(50))
设置col、row方向的树高,就是上方和左边的聚类树的长度
pheatmap(bc,treeheight_row=100,treeheight_col=30)
给图片加上标题
pheatmap(bc,treeheight_row=100,treeheight_col=30,main = "Tomato Heatmap")
不显示一个聚类的方向,或者都不显示
pheatmap(bc,treeheight_row=120,treeheight_col=20,cluster_cols=FALSE)
pheatmap(bc,treeheight_row=120,treeheight_col=40,cluster_row = FALSE)
调整这个方框的大小,方框小了很多
pheatmap(bc,cellwidth = 15, cellheight = 12, fontsize =10)
显示方格中相关系数的数值,并设置字体颜色
pheatmap(bc, display_numbers = TRUE,number_color = "blue")
如您的数据中还有相关的亚组,可以进一步显示亚组的信息,我们的数据中没有亚组,我们来生成一个亚组的数据框
annotation_col = data.frame(group = factor(rep(c("gr1", "gr2"), 10)), Time = 1:20)
rownames(annotation_col) = dput(names(bc))
数据大概数这样的
pheatmap(bc, annotation_col = annotation_col)
这样亚组的信息就显示出来了,总的来说操作非常简单。
更多精彩信息,请关注公众号:零基础说科研