热图与分类变量和R中的系统发育树

时间:2015-03-12 09:24:30

标签: r heatmap categorical-data phylogeny

:)

我有一个问题,并没有通过个人搜索找到任何答案。 我想制作一个带有分类变量的热图(有点像这个:heatmap-like plot, but for categorical variables),我想在左侧添加一个系统发育树(就像这个:how to create a heatmap with a fixed external hierarchical cluster)。理想的是适应第二个,因为它看起来更漂亮! ;)

这是我的数据:

  • 一个新的格式化的系统发育树,有3种,让我们说:

    ((1,2),3);
    
  • 数据框:

    x<-c("species 1","species 2","species 3")
    y<-c("A","A","C")
    z<-c("A","B","A")
    df<- data.frame(x,y,z)
    

(A,B和C是分类变量,例如在我的情况下存在/不存在/重复基因)。

你知道怎么做吗?

非常感谢提前!


编辑:我希望能够选择热图中每个类别的颜色,而不是经典渐变。假设A =绿色,B =黄色,C =红色

2 个答案:

答案 0 :(得分:0)

我实际上是自己想出来的。对于那些感兴趣的人,这是我的脚本:

#load packages
library("ape")
library(gplots)

#retrieve tree in newick format with three species
mytree <- read.tree("sometreewith3species.tre")
mytree_brlen <- compute.brlen(mytree, method="Grafen") #so that branches have all same length


#turn the phylo tree to a dendrogram object
hc <- as.hclust(mytree_brlen) #Compulsory step as as.dendrogram doesn't have a     method for phylo objects.
dend <- as.dendrogram(hc)
plot(dend, horiz=TRUE) #check dendrogram face

#create a matrix with values of each category for each species
a<-mytree_brlen$tip
b<-c("gene1","gene2")
list<-list(a,b)
values<-c(1,2,1,1,3,2)  #some values for the categories (1=A, 2=B, 3=C)
mat <- matrix(values,nrow=3, dimnames=list) #Some random data to plot

#plot the hetmap
heatmap.2(mat, Rowv=dend, Colv=NA, dendrogram='row',col =
        colorRampPalette(c("red","green","yellow"))(3), 
          sepwidth=c(0.01,0.02),sepcolor="black",colsep=1:ncol(mat),rowsep=1:nrow(mat),
      key=FALSE,trace="none",
      cexRow=2,cexCol=2,srtCol=45,
      margins=c(10,10),
      main="Gene presence, absence and duplication in three species")


#legend of heatmap
par(lend=2)           # square line ends for the color legend
legend("topright",      # location of the legend on the heatmap plot
   legend = c("gene absence", "1 copy of the gene", "2 copies"), # category  labels
   col = c("red", "green", "yellow"),  # color key
   lty= 1,             # line style
   lwd = 15            # line width
)

这是结果图:) enter image description here

答案 1 :(得分:-1)

我正在尝试使用相同的语法和R包ape,gplots和RColorsBrewer来制作热图,其列树形图基本上是物种树。

但我无法继续阅读我的tre文件。尝试在读入的树文件上执行以下任何操作时会出现各种错误: a)情节,或 b)compute.brlen,和 c)在崩溃之后的情节。在物种树拓扑方面看起来完全被破坏了

我怀疑我的tre输入有问题,但不确定是什么。你会碰巧明白什么是错的,我怎么能解决它?谢谢!

<(>(((((((((Mt3.5v5,Mt4.0v1),Car),(((Pvu186,Pvu218),(Gma109,Gma189)),Cca))),(( (Ppe139,Mdo196),Fve226),Csa122)),((((((((Ath167,Aly107),Cru183),(Bra197,Tha173)),Cpa113),(Gra221,Tca233)),(Csi154,( Ccl165,Ccl182))),((Mes147,Rco119),(Lus200,(Ptr156,Ptr210)))),Egr201)),Vvi145),((Stu206,Sly225),Mgu140)),Aco195),((( Sbi79,Zma181),(Sit164,Pvi202)),(Osa193,Bdi192)),(Smo91),Ppa152),(((Cre169,Vca199),Csu227),((Mpu228,Mpu229),Olu231))); < / p>