我怎样才能让 ggtree::geom_range 工作?

How can I get ggtree::geom_range to work?

我正在尝试按照 treedata book 中的说明向节点添加范围条。这是我正在努力实现的书中的一个例子:

注意红色条。

下面是创建带有红色条形树图像的代码:

library(tidyverse)
library(treeio)
library(ggtree)

# create a tree and add a numeric annotation called 'range'
tree = rtree(3) %>% as.treedata %>% as_tibble %>% 
  mutate(range=0.1) %>% 
  as.treedata

# plot the tree and add red bars with geom_bar()
ggtree(tree)  + geom_range(range='range', color="red")

但是,生成的图没有红色条。

我需要做什么才能为每个节点添加红色条?

我正在使用 ggtree v2.2.4、treeio v1.12.0 和 ggplot2 v3.3.2。

您只为 range 提供了一个值。在您链接的示例中,列 range 是一个列表,其中每行包含一个最小值和最大值。所以你可能想要这样的东西:

library(tidyverse)
library(treeio)
library(ggtree)

# create a tree and add a numeric annotation called 'range'
tree = rtree(3) %>% as.treedata %>% as_tibble %>% 
  mutate(number = 1:5,
        range = lapply(number, function(x) c(-0.1, 0.1) + x)) %>% 
  as.treedata

# plot the tree and add red bars with geom_bar()
ggtree(tree)  + 
  geom_range("number", range='range', color="red", size = 3, alpha = 0.3) + 
  theme_tree2()