私は属レベルで注釈をつけたツリーを持っています(つまり、各リーフに名前があります)。子供が同じ属を持つ限り、ブランチ/エッジの葉の色を伝えたいので、このプロットのように:tidygraphの子から値を伝播
マイツリーが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]]
}))
マルコSandri答え 01後
Error in mutate_impl(.data, dots) : Evaluation error: Cannot coerce values to character(1).
EDIT
mutate(Genus = as.character(Genus))
の場合、これ以上エラーメッセージは表示されませんが、属は正しく伝播しません。たとえば、右から3番目と4番目のノードが表示されます。親はNA
...となります(ブログポストプロットでは機能しません)。 TBL
で
ありがとうございました。しかし、私の編集で言ったように、コードはうまく動作しません。 – AntoineBic
@ MrSnakeこれは別の新しい質問です。今すぐコードが動作しますが、期待した結果が得られません。この投稿を閉じる(削除しない)ようにして、あなたの問題の詳細を記述する新しい場所を開くことをお勧めします。 –