如何解决将圆形布局的顺序设置为递减会更改 igraph 网络中的节点位置
我在下方创建了向左方向的圆形网络。节点 "Robert Zero"
始终设置在顶部。节点的数量每次都可能不同,所以我必须得到一个通用的解决方案。这段代码会发生这种情况:
library('igraph')
id <- c("Steve Sweet","Tom Thompson","Roger Rabbit","Robert Zero" )
label <- c("Steve Sweet","Robert Zero" )
color<-c("gray","gray","yellow")
nodes <- data.frame(id,label,color)
from <- c("Steve Sweet","Robert Zero" )
to <- c("Tom Thompson","Robert Zero","Steve Sweet")
group<-c("Residential Mortgage","Real Estate Law","Divorce Attorney","Personal Injury Law" )
width<-c(4.00,1.00,3.00,0.01)
color<-c("cyan","cyan","cyan")
lty<-c("solid","solid","dashed")
label<-c(NA,NA,"bridge")
edges <- data.frame(from,to,group,width,color,lty,label)
#Bringing the to name in this case main_name in the 1st row of nodes dataframe
nodes<-nodes[order(nodes$id != "Robert Zero"),]
#creating the graph object of nodes and edges simple paths
gph2 <- graph_from_data_frame(edges,directed=TRUE,vertices=nodes)
rot <- function(mat,mx = which.max(mat[,2])) {
if (mx == 1) mat else mat[c(mx:nrow(mat),1:(mx-1)),]
}
#plot every network
plot(gph2,layout = rot(layout_in_circle(gph2)))
但是我想使用 igraph
将我的网络方向转为顺时针(右)方向
plot(gph2,layout = rot(layout_in_circle(gph2,order = order(from,decreasing = T))))
但后来我得到了这个网络的边缘相互交叉,而我希望他们创建一个像上面那样但方向相反的网络:
解决方法
您可以获取顶点编号序列并将其反转:
vertices <- as.numeric(V(gph2))
inverse_order <- vertices[length(vertices):1]
plot(gph2,layout = rot(layout_in_circle(gph2,order = inverse_order)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。