微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

控制要更改尺寸图的节点

如何解决控制要更改尺寸图的节点

这可能看起来很简单,但我无法做到这一点。我想使用截止图绘制两种类型的节点,小节点和大节点。这些值在属性等级中。

这是一个小玩具示例

    g1 <- graph(edges=c(1,2,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)

FALSE FALSE FALSE是

好吧,我检查了我的学位数值,但是如何使用所需的临界值覆盖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,value = c(1,5)[i])

V(g1)$degree
#[1] 5 5 5 1

findInterval索引c(10,50)[i]中设置了不同的新大小后,图形如下所示。

g1 <- set_vertex_attr(g1,value = c(10,50)[i])
plot(g1,vertex.size = V(g1)$degree)

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。