将圆形布局的顺序设置为递减会更改 igraph 网络中的节点位置
Setting the order of circle layout to decreasing changes the nodes position in the igraph network
我在下面用左方向创建圆网。节点 "Robert Zero"
始终设置在顶部。节点数可能每次都不同所以我必须得到一个通用的 solution.This 发生在这段代码中:
library('igraph')
id <- c("Steve Sweet", "Tom Thompson", "Roger Rabbit", "Robert Zero" )
label <- c("Steve Sweet", "Tom Thompson", "Roger Rabbit", "Robert Zero" )
color<-c("gray", "gray", "gray", "yellow")
nodes <- data.frame(id,label,color)
from <- c("Steve Sweet", "Tom Thompson", "Roger Rabbit", "Robert Zero" )
to <- c("Tom Thompson", "Roger Rabbit", "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", "cyan")
lty<-c("solid", "solid", "solid", "dashed")
label<-c(NA,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)))
我在下面用左方向创建圆网。节点 "Robert Zero"
始终设置在顶部。节点数可能每次都不同所以我必须得到一个通用的 solution.This 发生在这段代码中:
library('igraph')
id <- c("Steve Sweet", "Tom Thompson", "Roger Rabbit", "Robert Zero" )
label <- c("Steve Sweet", "Tom Thompson", "Roger Rabbit", "Robert Zero" )
color<-c("gray", "gray", "gray", "yellow")
nodes <- data.frame(id,label,color)
from <- c("Steve Sweet", "Tom Thompson", "Roger Rabbit", "Robert Zero" )
to <- c("Tom Thompson", "Roger Rabbit", "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", "cyan")
lty<-c("solid", "solid", "solid", "dashed")
label<-c(NA,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)))