Pheatmap热图的绘制及如何调整图片

Pheatmap热图的绘制及如何调整图片

Pheatmap包是R语言绘制热图比较强大的软件包,当然现在也有很多资料介绍这个包的使用,但是今天我写的重点不是如何使用这个包绘制热图,而是如何绘制出更好看的热图。(我使用的矩阵是1663x594),下面的左图和右图来源于同一个数据。明显可以看出左图更加直观和美观。那么绘制左图的步骤主要分下面三步:

第一步,绘制成普通热图:

数据格式

#读取数据

rt=read.table("diffmRNAExp.txt",sep="\t",header=T,check.names=F)

#第一列为行名

rownames(rt) = rt[,1]

#去掉行名,将表达量取均值

rt = rt[,-1]
rt=log10(rt+1)

#加载R包

library(ggplot2) library(pheatmap)

#绘制热图

pheatmap(rt,scale = "row",cluster_row =T,cluster_col =F,show_rownames=F,
	  color = colorRampPalette(colors = ("blue","white","red"))(102))

第二步,右边的颜色尺度范围默认是(-20,20),通过设置自行调整,比如说调整成(-4,4)。

bk <- c(seq(-4,-0.1,by=0.01),seq(0,4,by=0.01))
pheatmap(rt,scale = "row",cluster_row =T,cluster_col =F,show_rownames=F,
color=c(colorRampPalette(colors=c("blue","white"))(length(bk)/2),colorRampPalette(color=c("white","red"))(length(bk)/2)),fontsize=8,fontsize_row=4,legend_breaks=seq(-4,4,2),breaks=bk)
 

第三,添加分组,这里我们分别对行和列分别添加分组为例,如样本为T和N,而基因分为上调和下调。

annotation_row=read.table("group.txt",sep="\t",header=T)
annotation_col=read.table("group1.txt",sep="\t",header=T)
row_anno=data.frame(Type=annotation_row$type,row.names=annotation_row$gene)
col_anno=data.frame(Group=annotation_col$mm,row.names=colnames(rt))
分组

的格式文件如下:

pheatmap(rt,scale = "row",cluster_row =T,cluster_col =F,show_rownames=F,annotation_row=row_anno,annotation_col=col_anno,   
	  color = c(colorRampPalette(colors = c("blue","white"))(length(bk)/2),colorRampPalette(colors = c("white","red"))(length(bk)/2)),
	  fontsize=8,fontsize_row=4,legend_breaks=seq(-4,4,2),breaks=bk)
 

看到这里可能有的人说,里面分组的颜色太丑了,想换掉行不行?当然是可以的

ann_colors = list(Type=c("up"="red","down"="blue"),Group=c("N"="blue","T"="red"))
tiff(file="heatmap-1.tiff",width = 10,height =10,units ="cm",compression="lzw",bg="white",res=500)
pheatmap(rt,scale = "row",cluster_row =T,cluster_col =F,show_rownames=F,annotation_row=row_anno,annotation_col=col_anno,
      clustering_column_method = "complete",show_colnames=F,main="lncRNA",annotation_colors =ann_colors,
	  color = c(colorRampPalette(colors = c("blue","white"))(length(bk)/2),colorRampPalette(colors = c("white","red"))(length(bk)/2)),
	  fontsize=8,fontsize_row=4,legend_breaks=seq(-4,4,2),breaks=bk)
 

这里我只是以红色和蓝色为例,大家可以换成自己想要的颜色!

图片:
普通的热图
在这里插入图片描述
我们想要绘制的形式
在这里插入图片描述

数据格式
在这里插入图片描述
修改右边的标尺
在这里插入图片描述
添加分组在这里插入图修改右边的标尺片描述在这里插入图片描述

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值