r - 控制哪些节点改变大小 igraph
问题描述
这可能看起来很简单,但我无法做到这一点。我想使用截止点绘制两种类型的节点,小节点和大节点。值在属性度中。
这是一个小玩具示例
g1 <- graph(edges=c(1,2, 2,3, 3, 1, 4,2), n=4, directed=F) %>%
set_vertex_attr("names", value = LETTERS[1:4])
g1_degree <- degree(g1, mode = "total")
g1_degree
[1] 2 3 2 1
g1 <- set_vertex_attr(g1, "degree", value = g1_degree)
plot(g1, vertex.size=V(g1)$degree)
这给了我根据度数的每个节点,但我想要度数为 2 和 3 大和 1 小的节点。所以我尝试编辑 V(g1)$degree 中的值
ifelse(V(g1)$degree < 2, yes = V(g1)$degree==1, no = V(g1)$degree==5)
假 假 假 真
好的,我检查了我的学位值,但是如何使用我需要的截止值覆盖 TRUE 或 FALSE?
解决方案
这里有两个解决方案。
一个ifelse
,就像在问题中一样。
g1 <- set_vertex_attr(g1, "degree", value = ifelse(V(g1)$degree < 2, 1, 5))
V(g1)$degree
#[1] 5 5 5 1
另一个与findInterval
. 这比 具有更好的性能ifelse
,这在大型数据集中可能很重要。
i <- findInterval(V(g1)$degree, c(0, 2, Inf))
g1 <- set_vertex_attr(g1, "degree", value = c(1, 5)[i])
V(g1)$degree
#[1] 5 5 5 1
使用findInterval
索引设置不同的新尺寸c(10, 50)[i]
,图表将如下所示。
g1 <- set_vertex_attr(g1, "degree", value = c(10, 50)[i])
plot(g1, vertex.size = V(g1)$degree)
推荐阅读
- java - 类在使用扩展方法时返回扩展类的参数而不是它自己的参数
- javascript - 这两个闭包有什么区别?
- flutter - 如何在颤振流中正确调用 S3 文件?
- geometry - 如何在 Yelp 或 Uber 服务中使用 S2?
- javascript - 在 Bootstrap 5 中实现暗/亮/...模式的最合适方法是什么?
- python - GridSearchCV 没有为 xgboost 选择最佳超参数
- swift - 用新数据重新加载 PageViewController
- uwp - ObservableCollection 在 UWP 和 WASM 上的行为不同
- nginx - 在 nignx 中动态重写路径
- module - 如何使用 Xquery 为 MarkLogic 实现自动递增数字主键