锐界语言代码,途锐语言代码

最重要步骤

首要步骤

绘图热图除了行使ggplot二,还足以有别的的包或函数,比如pheatmap::pheatmap
(pheatmap包中的pheatmap函数)、gplots::heatmap.贰等。

ggplot2

  • 数码处理成矩阵方式,给行名列名
  • hclust聚类,改变矩阵行列顺序为聚类后的次第
  • melt数据,处理成ggplot二力所能及直接处理的数据结构,并累加列名
  • ggplot_tile进行绘画

ggplot2

  • 数量处理成矩阵格局,给行名列名
  • hclust聚类,改变矩阵行列顺序为聚类后的逐壹
  • melt数据,处理成ggplot二可知平昔处理的数据结构,并丰裕列名
  • ggplot_tile实行绘画

 

gplots

  • 数据处理成矩阵格局,给行名列名
  • 调制颜色并用heatmap.二画热图(heatmap.二函数内部用hclustfun 实行聚类)

gplots

  • 数量处理成矩阵形式,给行名列名
  • 调制颜色并用heatmap.贰画热图(heatmap.二函数内部用hclustfun 举行聚类)

对照于ggplot2作heatmap,
pheatmap会更为不难一些,三个函数设置差别的参数,可以成功行列聚类、行列注释、Z-score总计、颜色自定义等。

Tiguan语言代码

library(ggplot2) 
library(data.table)
CN_DT <- fread("/home/ywliao/project/Gengyan/ONCOCNV_result/ONCOCNV_all_result.txt",sep="\t")
dt <- CN_DT[cfDNATime=="cfDNA1"]
wdt <- dcast(dt,Gene~Sample,value.var = "CN",fun.aggregate = mean)
data <- as.matrix(wdt[,2:length(wdt),with=F])  #数据矩阵
rownames(data) <- unlist(wdt[,1]) 

hc<-hclust(dist(data),method = "average") #对行进行聚类
rowInd<-hc$order #将聚类后行的顺序存为rowInd
hc<-hclust(dist(t(data)),method = "average")  #对矩阵进行转置,对原本的列进行聚类
colInd<-hc$order  #将聚类后列的顺序存为colInd
data<-data[rowInd,colInd] #将数据按照聚类结果重排行和列
dp=melt(data)    #对数据进行融合,适应ggplot的数据结构,以进行热图的绘制
colnames(dp) <- c("Gene","Sample","Value")
p <- ggplot(dp, aes(Sample,Gene)) + geom_tile(aes(fill = as.factor(Value)))+theme(axis.text.x=element_text(angle = 90))+ guides(fill = guide_legend(title = "Copy Number")) + scale_fill_brewer(palette = 3)
p

图片 1
图片 2

library(gplots)
library(data.table)
CN_DT <- fread("/home/ywliao/project/Gengyan/ONCOCNV_result/ONCOCNV_all_result.txt",sep="\t")
dt <- CN_DT[cfDNATime=="cfDNA1"]
wdt <- dcast(dt,Gene~Sample,value.var = "CN",fun.aggregate = mean)
dp <- as.matrix(wdt[,2:length(wdt),with=F])  #数据矩阵

labrow <- unlist(wdt[,1,with=F]) #行名
colorsChoice<- colorRampPalette(c("green","black","red"))  #调制颜色

heatmap.2(dp,labRow = labrow,col=colorsChoice(5),breaks = c(1,1.5,2,2.5,3,4),density.info="histogram",
          hclustfun = function(c)hclust(c,method="average"),keysize = 1.5, cexRow=0.5,trace = "none");

图片 3

奥迪Q叁语言代码

library library(data.table)CN_DT <- fread("/home/ywliao/project/Gengyan/ONCOCNV_result/ONCOCNV_all_result.txt",sep="\t")dt <- CN_DT[cfDNATime=="cfDNA1"]wdt <- dcast(dt,Gene~Sample,value.var = "CN",fun.aggregate = mean)data <- as.matrix(wdt[,2:length,with=F])  #数据矩阵rownames <- unlist hc<-hclust(dist,method = "average") #对行进行聚类rowInd<-hc$order #将聚类后行的顺序存为rowIndhc<-hclust(dist,method = "average")  #对矩阵进行转置,对原本的列进行聚类colInd<-hc$order  #将聚类后列的顺序存为colInddata<-data[rowInd,colInd] #将数据按照聚类结果重排行和列dp=melt    #对数据进行融合,适应ggplot的数据结构,以进行热图的绘制colnames <- c("Gene","Sample","Value")p <- ggplot(dp, aes(Sample,Gene)) + geom_tile(aes(fill = as.factor+theme(axis.text.x=element_text(angle = 90))+ guides(fill = guide_legend(title = "Copy Number")) + scale_fill_brewer(palette = 3)p

图片 4
图片 5

librarylibrary(data.table)CN_DT <- fread("/home/ywliao/project/Gengyan/ONCOCNV_result/ONCOCNV_all_result.txt",sep="\t")dt <- CN_DT[cfDNATime=="cfDNA1"]wdt <- dcast(dt,Gene~Sample,value.var = "CN",fun.aggregate = mean)dp <- as.matrix(wdt[,2:length,with=F])  #数据矩阵labrow <- unlist(wdt[,1,with=F]) #行名colorsChoice<- colorRampPalette(c("green","black","red"))  #调制颜色heatmap.2(dp,labRow = labrow,col=colorsChoice,breaks = c(1,1.5,2,2.5,3,4),density.info="histogram",          hclustfun = functionhclust(c,method="average"),keysize = 1.5, cexRow=0.5,trace = "none");

图片 6

data_ori <- "Grp_1;Grp_2;Grp_3;Grp_4;Grp_5
a;6.6;20.9;100.1;600.0;5.2
b;20.8;99.8;700.0;3.7;19.2
c;100.0;800.0;6.2;21.4;98.6
d;900;3.3;20.3;101.1;10000"

data <- read.table(text=data_ori, header=T, row.names=1, sep=";", quote="")
  Grp_1 Grp_2 Grp_3 Grp_4   Grp_5
a   6.6  20.9 100.1 600.0     5.2
b  20.8  99.8 700.0   3.7    19.2
c 100.0 800.0   6.2  21.4    98.6
d 900.0   3.3  20.3 101.1 10000.0
pheatmap::pheatmap(data, filename="pheatmap_1.pdf")

就算有点丑,但一步就出来了。

 

别的Z-score计算在pheatmap中只要2个参数就足以完结。

pheatmap::pheatmap(data, scale="row", filename="pheatmap_1.pdf")

图片 7

有时候或者不须要行或列的聚类,原始体现就足以了。

pheatmap::pheatmap(data, scale="row", cluster_rows=FALSE, cluster_cols=FALSE, filename="pheatmap_1.pdf")

给矩阵
(data)中央银行和列分歧的分组注释。要是有七个文本,第贰个文本为行注释,其首先列与矩阵中的第3列内容一律
(顺序未有涉嫌),别的列为第贰列的不等的标志,如上面示例中(假设行为基因,列为样品)的二,三列对应基因的两样类型
(TF or
enzyme)和不一样分组。第二个文本为列注释,其首先列与矩阵中第三行内容一致,别的列则为样品的笺注。

row_anno = data.frame(type=c("TF","Enzyme","Enzyme","TF"), class="c"("clu1","clu1","clu2","clu2"), row.names=rownames(data))
row_anno
    type class
a     TF  clu1
b Enzyme  clu1
c Enzyme  clu2
d     TF  clu2
col_anno = data.frame(grp=c("A","A","A","B","B"), size=1:5, row.names=colnames(data))
col_anno
      grp size
Grp_1   A    1
Grp_2   A    2
Grp_3   A    3
Grp_4   B    4
Grp_5   B    5
pheatmap::pheatmap(data, scale="row", 
cluster_rows=FALSE, 
annotation_col=col_anno,
annotation_row=row_anno,
filename="pheatmap_1.pdf")

自定义下颜色吗。

# <bias> values larger than 1 will give more color for high end. 
# Values between 0-1 will give more color for low end.
pheatmap::pheatmap(data, scale="row", 
cluster_rows=FALSE, 
annotation_col=col_anno,
annotation_row=row_anno,
color=colorRampPalette(c('green','yellow','red'), bias=1)(50),
filename="pheatmap_1.pdf")

不改脚本的热图绘制

绘图时一般会遇见八个高烧的难题:

  1. 须求画很多的图,唯一的两样正是出口文件,别的都不要求修改。若是用LAND脚本,供给频仍交替文件名,繁琐又便于出错。
  2. 每便绘图都亟需不停的调动参数,时间久了不用,就记不清参数放哪了;可能调整次数过多,有了很多版本,最终不知底用哪些了。

为了简化绘图、维持脚本的一致,小编用bash对奥迪Q5做了三个包裹,然后就能够透过修改命令参数绘制不一致的图了。

 

先看一看怎么使用

先是把测试数据存款和储蓄到文件中有益调用。数据矩阵存款和储蓄在heatmap_data.xls文件中;行注释存储在heatmap_row_anno.xls文件中;列注释存款和储蓄在heatmap_col_anno.xls文件中。

# tab键分割,每列不加引号
write.table(data, file="heatmap_data.xls", sep="\t", row.names=T, col.names=T, quote=F)
# 如果看着第一行少了ID列不爽,可以填补下。-i参数直接对文件进行操作,1 指定第一行。在行首添加制表符
system("sed -i '1 s/^/ID\t/' heatmap_data.xls")

write.table(row_anno, file="heatmap_row_anno.xls", sep="\t", row.names=T, col.names=T, quote=F)
write.table(col_anno, file="heatmap_col_anno.xls", sep="\t", row.names=T, col.names=T, quote=F)

然后用程序sp_pheatmap.sh绘图。

# -f: 指定输入的矩阵文件
# -d:指定是否计算Z-score,<none> (否), <row> (按行算), <col> (按列算)
# -P: 行注释文件
# -Q: 列注释文件
$ sp_pheatmap.sh -f heatmap_data.xls -d row -P heatmap_row_anno.xls -Q heatmap_col_anno.xls

贰个回车就取得了图,字有点小,是因为图太大了,把图的宽和高裁减下试试。

# -u: 设置宽度,单位是inch
# -v: 设置高度,单位是inch
$ sp_pheatmap.sh -f heatmap_data.xls -d row -P heatmap_row_anno.xls -Q heatmap_col_anno.xls -u 8 -v 12

横轴的符号水平放置

# -A: 0, X轴标签选择0度
# -C: 自定义颜色,注意引号的使用,最外层引号与内层引号不同,引号之间无交叉
# -T: 指定给定的颜色的类型;如果给的是vector (如下面的例子), 则-T需要指定为vector; 否则结果会很怪异,只有俩颜色。
# -t: 指定图形的题目,注意引号的使用;参数中包含空格或特殊字符等都要用引号引起来作为一个整体。
$ sp_pheatmap.sh -f heatmap_data.xls -d row -P heatmap_row_anno.xls -Q heatmap_col_anno.xls -u 8 -v 12 -A 0 -C 'c("white", "blue")' -T vector -t "Heatmap of gene expression profile"

相关文章