3

私は系統樹を持っています:

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使用を組み合わせるとうまくいくと思いました。scatterpiegeom_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()

パイは歪みませんが、ツリーは反転して垂直になり、根が下を向きます。 ここに画像の説明を入力

パイを歪ませず、根を左側にして木を水平にする方法はありますか?

4

1 に答える 1

1

系統発生をscatterpie個別にプロットしてから組み合わせる方が簡単なようです。

データ:

my.tree <- ape::read.tree(text = "((rat:0.06290316531,mouse:0.06094803666):0.05175420892,human:0.09883650566);")

library(dplyr)
my.dend <- phylogram::as.dendrogram.phylo(my.tree) %>%
  dendextend::hang.dendrogram() %>%
  dendextend::hang.dendrogram(hang = -1) %>%
  dendextend::as.ggdend()

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

library(ggplot2)
library(scatterpie)

プロット:

my.dend <- 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_void()
my.scatterpie <- ggplot()+geom_scatterpie(aes(x=y,y=x,r=0.1),data=labels.df,color=NA,cols=as.character(1:3))+coord_equal()+labs(x="",y="",fill="Cluster")+theme_minimal()+theme_void()

gridExtra::grid.arrange(grobs=list(my.dend,my.scatterpie),ncol=2,nrow=1)

そして、次のようになります。

ここに画像の説明を入力

誰かがそれを追加できるなら、ツリーとパイを隔てるスペースの一部を縮小できるといいですね.

于 2019-04-17T18:12:40.283 に答える