gpt4 book ai didi

r - 将 ggdend 树与 geom_scatterpie 相结合

转载 作者:行者123 更新时间:2023-12-04 17:38:09 34 4
gpt4 key购买 nike

我有一个系统发育树:

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

我想使用 ggplot2 绘制 my.dend 并添加到叶子饼图中。

这是描述每片叶子的馅饼的 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))

我认为使用 scatterpiegeom_scatterpiemy.dend 的绘图与 labels.df 相结合可以工作。

我也是这样的:

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

给出:

enter image description here

如果在最后添加+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()

馅饼没有变形,但树翻转成为垂直的 - 根部朝下: enter image description here

知道如何让馅饼不变形并且树水平且根在左边吗?

最佳答案

看起来单独绘制系统发育图和 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)

我们得到:

enter image description here

能够缩小一些将树与馅饼分开的空间会很好,如果有人可以添加的话。

关于r - 将 ggdend 树与 geom_scatterpie 相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55721766/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com