Как скрыть неподключенные узлы в ggraph
Учитывая следующий пример кода,
library(tidyverse)
library(tidygraph)
library(ggraph)
reprex <- tibble(to = 1:10,
from = c(2:10, 1),
facet = rep(1:2, each = 5)) %>%
as_tbl_graph()
reprex_plot <- reprex %>%
ggraph() +
geom_node_point() +
geom_edge_link()
reprex_plot + facet_edges(~ facet)
Как я могу скрыть узлы, у которых нет ребра, входящего или выходящего из узла?
1 ответ
library(tidyverse)
library(tidygraph)
library(ggraph)
reprex2 <- tibble(to = 1:10,
from = c(2:10, 1)) %>%
as_tbl_graph() %>%
activate(nodes) %>%
mutate(facet = rep(1:2, each = 5))
reprex_plot <- reprex2 %>%
ggraph() +
geom_node_point() +
geom_edge_link() +
geom_node_label(aes(label = name)) +
theme_graph() +
facet_nodes(~ facet)
reprex_plot
Я могу сочувствовать вашему подходу, но трудности возникают с интеллектом tidygraph
"s as_tbl_graph()
, Вы передаете его по существу списку ребер, где фасет - это переменная, которая применяется только к ребрам. Вы можете проверить это, выполнив reprex %>% activate(nodes) %>% as_tibble()
чтобы увидеть, что столбец фасета не связан с узлами.
Мое решение состоит в том, чтобы явно построить столбец фасетов на узлах, а затем использовать facet_nodes()
что является противоположностью facet_edges()
в этом
Края рисуются, если их оконечные узлы присутствуют на панели.