Я нахожу решение, вы должны просто убрать все аргументы, приведенные Рэнди Гриффином в его посте, действительно, это делает ваше представление неверным.
Вам понадобятся следующие пакеты:
library(ape)
library(dplyr)
library(phytools)
# install from Bioconductor
source("https://bioconductor.org/biocLite.R")
biocLite("ggtree")
library(ggtree)
tree <- read.tree(text = "(org1:1, org2:1, (org3:0.15, org4:0.15):0.8500);")
traits <- data.frame(fastBM(tree, nsim=5))
plot(tree)
p8 <- ggtree(tree) +
geom_tiplab(size=2)
# add heatmap
p9 <- gheatmap(p8,
traits,
offset=0.2, low="white", high="black", colnames_position = "top", font.size=2)
p9
Это предложение относится к дереву с одинаковой длиной ветвей. Но это работает и для разной длины. На самом деле в своем примере он ставит xlim(0, 125)
, потому что длина его ребер достигает не более 40, но в вашем примере длина ребра меньше. Поэтому лучше оставить функцию R, чтобы найти наилучший предел для вашего графика.
Ваши данные в следующем формате ',' будут легче импортировать с помощью R:
x,x1,x2,x3,x4,x5
org1,50,20,40,70,50
org2,10,15,60,78,20
org3,40,50,40,70,20
org4,80,50,40,20,30
Этот код используется для импорта данных:
df <- read_csv("stack.txt")
df <- as.data.frame(df)
rownames(df) <- df$x
df <- df[,-1]
Вам просто нужно изменить traits
в df
, потому что у вас есть правильное имя для строки и столбца.
p8 <- ggtree(tree) +
geom_tiplab(size=2)
# add heatmap
p9 <- gheatmap(p8,
df,
offset=0.2, low="white", high="black", colnames_position = "top", font.size=2)
p9
Вы можете взглянуть на виньетку пакета ape по следующему адресу, чтобы узнать, как вручную построить объект, подобный объекту data.tree в R:
https://cran.r -project.org / веб / пакеты / APE / index.html
Это поможет вам в остальной части вашей работы и поможет нам также помочь вам.
Код вашего вопроса на данный момент неверен, и мы не можем знать, какое дерево вы хотите.