1
我有一棵树在属级别注释(即每个叶子都有一个名字),我想宣传叶子的颜色在分支/边缘,只要孩子有相同的属,像这样的情节:传播价值从儿童与整洁
我的树是here(对不起,dput
不工作...),他看起来就像是:
library(ggraph)
library(tidygraph)
load("tree_v3")
TBL %>% activate(nodes) %>% as_tibble
# A tibble: 50 x 2
leaf Genus
<lgl> <fctr>
1 FALSE NA
2 TRUE Klebsiella
3 TRUE Klebsiella
4 FALSE NA
5 TRUE Klebsiella
6 TRUE Klebsiella
7 FALSE NA
8 FALSE NA
9 TRUE Klebsiella
10 FALSE NA
# ... with 40 more rows
我可以用此代码打印树,但正如您所看到的,边缘颜色留在树叶附近。
TBL %>%
ggraph('dendrogram') +
theme_bw() +
geom_edge_diagonal2(aes(color = node.Genus)) +
scale_edge_color_discrete(guide = FALSE) +
geom_node_point(aes(filter = leaf, color = Genus), size = 2)
有一节映射在这个blog post搜索一个代码,但它不会对我的数据工作,我不明白为什么...
TBL2 <- TBL %>%
activate(nodes) %>%
mutate(Genus = map_bfs_back_chr(node_is_root(), .f = function(node, path, ...) {
nodes <- .N()
if (nodes$leaf[node]) return(nodes$Genus[node])
if (anyNA(unlist(path$result))) return(NA_character_)
path$result[[1]]
}))
Error in mutate_impl(.data, dots) : Evaluation error: Cannot coerce values to character(1).
马尔科桑德里答案后编辑
使用mutate(Genus = as.character(Genus))
不存在更多的错误消息,但Genus不能正确传播。例如,请参阅从右侧开始的第三个和第四个节点:父级应该是NA
...(请注意,它在博客帖子图中不起作用)。
谢谢你的帮助。然而,正如我在编辑中所说的那样,代码工作得不好。 – AntoineBic
@MrSnake这是一个不同的新问题。现在的代码工作,但它不会给你预期的结果。我建议你关闭(不要删除)这个帖子,并在你详细描述你的问题的地方打开一个新的帖子。 –