2015-03-12 7 views
0

:)Карта с категориальными переменными и с филогенетическим деревом в R

У меня есть вопрос и ответа не найдено по личным вопросам. Я хотел бы сделать плакат с категориальными переменными (немного похожий на этот: heatmap-like plot, but for categorical variables), и я хотел бы добавить на левой стороне филогенетическое дерево (например, это: how to create a heatmap with a fixed external hierarchical cluster). Идеальным было бы адаптировать второй, поскольку он выглядит намного красивее! ;)

Вот мои данные:

  • Newick отформатированные филогенетическое дерево, с 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, являющимися c атерологические переменные, например, в моем случае гена присутствия/отсутствия/дублирования).

Вы бы знали, как это сделать?

Большое спасибо заранее!


EDIT: Я хотел бы иметь возможность выбрать цвет каждые из категорий в тепловой карте, а не классическая градацию. Скажем, A = зеленый, B = желтый, C = красный

+0

Вы знаете, как сделать дендрограмму? Для карты тепла вы можете сопоставить категориальные значения с чем-то числом и занести в матрицу. –

+0

Да, я уже сделал дендрограмму! 'mytree <-read.tree ("sometree.tre") # выверните филовое дерево объекту дендрограммы данные (mytree) # Это уже объект phylo hc <- as.hclust (mytree) # Комбинированный шаг as as.dendrogram не имеют метод для фило объектов. dend <- as.dendrogram (hc) plot (dend, horiz = TRUE) ' – tlorin

+0

Но если я сопоставляю числовые значения, могу ли я выбрать цвет вручную для каждой категории? – tlorin

ответ

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

+0

Я, наконец, получил достаточно репутации! Вот результат image: – tlorin

-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)));

+0

Ваше дерево, кажется, не в новом формате :) – tlorin

Смежные вопросы