【问题标题】:How to hide unconnected nodes in ggraph如何在ggraph中隐藏未连接的节点
【发布时间】:2017-09-28 10:01:47
【问题描述】:

鉴于以下示例代码,

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)

如何隐藏没有边进入或退出节点的节点?

【问题讨论】:

  • 您找到解决方案了吗?
  • 不,我没有。我最近没有做任何网络绘图,所以我并没有真正追求它
  • 谢谢。欣赏回应。这将很难实施。我试过grid.arrange。我可以删除孤立的节点,但每种情况下的布局都不同。没有帮助。我认为在 geom_edge_link() 中具有美学以仅显示连接的节点会很酷。
  • 我认为部分解决方案是使用诸如 mutate(node_edge_description = .E()$edge_description) 之类的方法将边缘数据应用于节点,然后由节点和边缘分面...不确定

标签: r tidyverse ggraph tidygraph


【解决方案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

我可以理解你的做法,但困难在于tidygraphas_tbl_graph() 的智慧。您实际上是在传递一个边缘列表,其中 facet 是一个仅适用于边缘的变量。您可以通过 reprex %&gt;% activate(nodes) %&gt;% as_tibble() 来验证这一点,以查看 facet 列与节点没有关联。

我的解决方案是在节点上显式构造构面列,然后使用 facet_nodes()facet_edges() 相反

如果它们的终端节点都出现在面板中,则绘制边缘。

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多