将系统发育树与x,y图结合起来

时间:2013-07-22 23:01:17

标签: r ggplot2 gridextra phylogeny ape-phylo

我正在尝试将系统发育树安排到显示一组相关生物的生理数据的图表上。如下图所示。这是从2个独立的图表中汇总到powerpoint中的。我想它完成了工作,但我希望创建一个我认为更容易格式化为文档的单个图像。我能够使用ggplot2生成我想要的图形,并使用ape导入树。我在想应该有一种方法可以将树保存为图形对象,然后使用gridExtra中的gridarrange函数将其与图形一起排列。问题是ape不会让我将树保存为图形对象,例如,

p2<-plot(tree, dir = "u", show.tip.label = FALSE)

只绘制树,当你调用p2时,它只给出一个参数列表。我想知道是否有人有任何提示。

谢谢!

enter image description here

2 个答案:

答案 0 :(得分:3)

我不确定这是否适用于CRAN的gtable

require(ggplot2)
require(gridBase)
require(gtable)

p <- qplot(1,1)
g <- ggplotGrob(p)

g <- gtable_add_rows(g, unit(2,"in"), nrow(g))
g <- gtable_add_grob(g, rectGrob(),
                     t = 7, l=4, b=7, r=4)

grid.newpage()
grid.draw(g)

#grid.force()
#grid.ls(grobs=F, viewports=T)
seekViewport("layout.7-4-7-4")
par(plt=gridPLT(), new=TRUE)
plot(rtree(10), "c", FALSE, direction = "u")
upViewport()

enter image description here

答案 1 :(得分:1)

首先,我要感谢baptiste所有他的多个答案,这些答案解决了ggplot2的大多数问题。

第二,我有一个类似的问题,其中包括来自猿里面的树使用ggplot2获得的热图。巴蒂斯特度过了我的一天,虽然我的简化版可以提供帮助。 我只使用了对我有用的东西(删除了gg_rows的添加)。

library(ape)
tr <- read.tree("mytree.tree")
# heat is the heatmap ggplot, using geom_tile
g <- ggplotGrob(heat)
grid.newpage()
grid.draw(g)
# use oma to reduce the tree so it fits 
par(new = TRUE, oma = c(5, 4, 5, 38))
plot(tr)
nodelabels(tr$node.label, cex = 1, frame = "none", col = "black", adj = c(-0.3, 0.5))
add.scale.bar()
# use dev.copy2pdf and not ggsave
dev.copy2pdf(file = "heatmap_prob.pdf")

结果在这里 heatmaptree