- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在摸索某些在 igraph 中相对简单的 Tidygraph 操作时遇到了一些麻烦。
特别是我想以不同的顺序分析特定的社区。我想我需要为此使用 Morphs,但我还没有让它工作。
library(tidygraph)
library(ggraph)
net <- tibble::tibble(A = letters[1:6],
B = rep(c("x", "y"), each = 3)) %>%
tidygraph::as_tbl_graph()
我想分析关于 x 的邻域。
net %>%
ggraph(layout = "nicely") +
geom_edge_link() +
geom_node_point(size = 10, fill = "white", shape = 21) +
geom_node_text(aes(label = name)) +
theme_graph()
提取节点x的邻域。
v <- net %>%
tidygraph::as.igraph() %>%
igraph::neighborhood(nodes = "x", order = 1)
igraph::induced_subgraph(net, vids = unlist(v)) %>%
tidygraph::as_tbl_graph() %>%
ggraph(layout = "nicely") +
geom_edge_link() +
geom_node_point(size = 10, fill = "white", shape = 21) +
geom_node_text(aes(label = name)) +
theme_graph()
以下实现返回相同的错误:
net %>%
tidygraph::morph(to_local_neighborhood, node = "x", order = 1, mode = "all")
net %>%
to_local_neighborhood(node = "x", order = 1, mode = "all")
Error in if (is.numeric(v) && any(v < 0)) { : missing value where TRUE/FALSE needed
最佳答案
使用一些基本 R 函数比 GitHub-linked solution 稍微迂回一点如果您不熟悉 tidygraph API,但我们可以使用 @camille's insight 获取节点的索引因为要求 node
参数是一个数字。
library(tidygraph)
#> Attaching package: 'tidygraph'
#> The following object is masked from 'package:stats':
#>
#> filter
library(ggraph)
#> Loading required package: ggplot2
# Example
net <- tibble::tibble(A = letters[1:6],
B = rep(c("x", "y"), each = 3)) %>%
tidygraph::as_tbl_graph()
# Get row name index as integer because tidygraph requirement
node_tbl <- data.frame(activate(net, nodes)) # Make sure focus on nodes
node_idx <- rownames(node_tbl)[node_tbl$name == "x"]
node_idx <- as.integer(node_idx) # tidygraph needs it as number, not string
net %>%
tidygraph::convert(to_local_neighborhood,
node = node_idx,
order = 1,
mode = "all") %>%
ggraph(layout = "nicely") +
geom_edge_link() +
geom_node_point(size = 10, fill = "white", shape = 21) +
geom_node_text(aes(label = name)) +
theme_graph()
由 reprex package 创建于 2020-07-03 (v0.3.0)
这里是 GitHub 链接的解决方案,它更多地利用了 tidygraph 的 API,通过在转换中使用 .N()
来引用 which(.N()$ 中的节点表名称 == "x")
.
library(tidygraph)
#> Attaching package: 'tidygraph'
#> The following object is masked from 'package:stats':
#>
#> filter
library(ggraph)
#> Loading required package: ggplot2
# Example
net <- tibble::tibble(A = letters[1:6],
B = rep(c("x", "y"), each = 3)) %>%
tidygraph::as_tbl_graph()
net %>%
tidygraph::convert(to_local_neighborhood,
node = which(.N()$name == "x"),
order = 1,
mode = "all") %>%
ggraph(layout = "nicely") +
geom_edge_link() +
geom_node_point(size = 10, fill = "white", shape = 21) +
geom_node_text(aes(label = name)) +
theme_graph()
由 reprex package 创建于 2020-07-03 (v0.3.0)
关于r - 提取有关 tidygraph 中特定节点的邻域/子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57515804/
使用另一个问题中的这个可重现的例子。如何标记/着色局部邻域图所基于的中心节点。 (在本例中为“x”) library(tidygraph) library(ggraph) # Example net
考虑这个简单的例子 library(tidygraph) mynodes 1 1 2 2 3 3 4 4 5 5 # # Edge Data: 4 x 3
我在摸索某些在 igraph 中相对简单的 Tidygraph 操作时遇到了一些麻烦。 特别是我想以不同的顺序分析特定的社区。我想我需要为此使用 Morphs,但我还没有让它工作。 library(t
我可以毫无问题地从两个数据帧在 igraph 中构建图形对象。当我尝试在 tidygraph 中做同样的事情时,我得到了错误。让我示范一下。首先我加载我的源数据(来自留言板的数据): library(
我是一名优秀的程序员,十分优秀!