0
我正在嘗試使用定義的方法here來構建一個自引導樹。因爲我有一個巨大的數據集,所以繪製每個人的名字(爲了這個例子而命名爲1,2,3,4 ...)並不是信息性的。因此,我希望將這些提示着色以反映個人的物種。個別品種的信息存儲在一個分離矩陣稱爲種類:爲個體物種的系統發育樹的提示着色
species = data.frame(Ind=c(1 ,2 ,3 ,4 ,5),
Spe=c("s1","se1","se2","se2","se3"))
然而,每當我試圖與它的配合$樹$標籤種類來代替個人的名字,唯一的結果是先發制人的載體。可能這是因爲契合是類pml的一個對象,而這與我的策略產生衝突,但我不確定。有沒有一種方法可以根據單個物種爲樹的顏色着色?我的代碼看起來是這樣的,現在:
library(phangorn)
#Create a tree from data in fasta format
dat = read.phyDat(file = "myalignment.fasta", format ="fasta")
tree <- pratchet(dat) # parsimony tree
mt <- modelTest(dat, tree=tree, multicore=TRUE)
mt[order(mt$AICc),]
bestmodel <- mt$Model[which.min(mt$AICc)]
env = attr(mt, "env")
fitStart = eval(get("GTR+G+I", env), env)
fit = optim.pml(fitStart, rearrangement = "stochastic", optGamma=TRUE, optInv=TRUE, model="GTR")
bs = bootstrap.pml(fit, bs=100, optNni=TRUE, multicore=TRUE)
#Replace the names with the species...
fit$tree$tip.label <- species[which(species[,1] == fit$tree$tip.label),2]
#If I print fit$tree$tip.label here, the output is factor(0)
#...and create the tree with colored tips
plotBS(midpoint(fit$tree), bs, p = 50, type="p", show.tip.label = FALSE)
tiplabels(pch=19, col = as.factor(fit$tree$tip.label), adj = 2.5, cex = 2)
重複的例子,
保存名爲「myalignment.fasta」並運行上面的代碼如下。它應該創建一個玩具如玩:
>1
AACCAGGAGAAAATTAA
>2
AAAAA---GAAAATTAA
>3
ACACAGGAGAAAATTAA
>4
AACCTTGAGAAAATTAT
>5
CCTGAGGAGAAAATTAA
應創建一個最小的[再現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。包含示例數據(我們無法在本地計算機上讀取文件)。如果我們可以將代碼複製/粘貼到R中,則測試和幫助會更容易。如果問題是關於繪圖,請刪除與問題無關的任何代碼。 – MrFlick
包函數通常包含使用內置數據集來演示函數如何工作的示例代碼。還可以使用'dput()'按照我包含的鏈接重新創建變量。您可以創建最少的數據用於問題本身。我只是建議這些東西,如果你想讓人們更容易幫助你。 – MrFlick
@MrFlick我創建了一個可以用來重現代碼的最小「myalignment.fasta」。 – j91