У меня есть филогенетическое дерево:
my.tree <- ape::read.tree(text = "((rat:0.06290316531,mouse:0.06094803666):0.05175420892,human:0.09883650566);")
, которое я затем преобразовываю в ggdend
объект:
library(dplyr)
my.dend <- phylogram::as.dendrogram.phylo(my.tree) %>%
dendextend::hang.dendrogram() %>%
dendextend::hang.dendrogram(hang = -1) %>%
dendextend::as.ggdend()
Я хотел бы построить my.dend
, используя ggplot2
и добавить к листовым круговым диаграммам.
Вот data.frame
, который описывает круг для каждого листа:
set.seed(1)
labels.df <- data.frame(label = c("human","mouse","rat"),t(apply(matrix(runif(9,0,1),3,3),1,function(x) x/sum(x))),check.names = F) %>%
dplyr::left_join(my.dend$labels %>% dplyr::select(x,y,label))
Я думал, что объединение построения my.dend
с labels.df
с использованием scatterpie
geom_scatterpie
может работать.
Так что я делаю:
library(ggplot2)
library(scatterpie)
ggplot(my.dend,labels=F,horiz=T)+guides(fill=F)+coord_flip()+annotate("text",size=4.5,hjust=0,x=my.dend$label$x,y=my.dend$label$y,label=my.dend$label$label)+labs(x="",y="")+theme_minimal()+
theme(axis.text=element_blank(),axis.ticks=element_blank(),panel.grid=element_blank(),legend.position="none",legend.text=element_blank(),legend.background=element_blank(),legend.key=element_blank())+
geom_scatterpie(aes(x=x,y=y+0.05),data=labels.df,color=NA,cols=as.character(1:3))
Что дает:
Если добавить +coord_flip()
в конец:
ggplot(my.dend,labels=F,horiz=T)+guides(fill=F)+coord_flip()+annotate("text",size=4.5,hjust=0,x=my.dend$label$x,y=my.dend$label$y,label=my.dend$label$label)+labs(x="",y="")+theme_minimal()+
theme(axis.text=element_blank(),axis.ticks=element_blank(),panel.grid=element_blank(),legend.position="none",legend.text=element_blank(),legend.background=element_blank(),legend.key=element_blank())+
geom_scatterpie(aes(x=x,y=y+0.05),data=labels.df,color=NA,cols=as.character(1:3))+coord_equal()
Пироги не искажаются, но дерево переворачивается, чтобы стать вертикальным - корень обращен вниз:
Есть идеи, как сделать так, чтобы пироги не искажались, а дерево было горизонтальным с корнем слева?