Как скрыть неподключенные узлы в 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() в этом

Края рисуются, если их оконечные узлы присутствуют на панели.

Другие вопросы по тегам