R中igraph的坐标

R中igraph的坐标,r,coordinates,igraph,tkplot,R,Coordinates,Igraph,Tkplot,我正在努力 1) 获取网络的坐标 2) 将它们用于其他网络,使其始终具有相同的节点位置 当我获取节点的坐标并将坐标设置为从中获取节点的同一网络时,坐标会发生变化。x位置保持不变,y位置与假设的y轴对称。因此,当申请两次时,这个职位就是我想要的 问题可能出在tkplot.getcoords()函数中。你知道有没有什么诀窍可以避免重复使用它 n <- 20 mat <- matrix(1:n^2, n,n) g <- graph.adjacency(mat, mode="dire

我正在努力 1) 获取网络的坐标 2) 将它们用于其他网络,使其始终具有相同的节点位置

当我获取节点的坐标并将坐标设置为从中获取节点的同一网络时,坐标会发生变化。x位置保持不变,y位置与假设的y轴对称。因此,当申请两次时,这个职位就是我想要的

问题可能出在tkplot.getcoords()函数中。你知道有没有什么诀窍可以避免重复使用它

n <- 20
mat <- matrix(1:n^2, n,n)
g <-  graph.adjacency(mat, mode="directed", weighted=TRUE, diag=FALSE)
V(g)$color <- "white"
id <- tkplot(g, edge.curved = 0.5)

coor <- tkplot.getcoords(id,norm=F)
coor
tkplot.setcoords(id, coor) # wrong position 

coor <- tkplot.getcoords(id,norm=F)
coor
tkplot.setcoords(id, coor) # desired position 
n
你知道有没有什么诀窍可以避免重复使用它

似乎你必须翻转y坐标;这在我的计算机上工作:

library(igraph)
set.seed(1);n <- 5
mat <- matrix(1:n^2, n,n)
g <-  graph.adjacency(mat, mode="directed", weighted=TRUE, diag=FALSE)
V(g)$color <- "white"
id <- tkplot(g, 200, 200, edge.curved = 0.5)
coor <- tkplot.getcoords(id,norm=F)
canvas_height <- as.numeric(tcltk::tkcget(tk_canvas(id), "-height"))-20 # twenty by trial&error - prly the frame border top&bottom?
coor[,2] <- canvas_height-coor[,2]
# move some vertices and...
tkplot.setcoords(id, coor) # reset
库(igraph)
结实。种子(1);N
你知道有没有什么诀窍可以避免重复使用它

似乎你必须翻转y坐标;这在我的计算机上工作:

library(igraph)
set.seed(1);n <- 5
mat <- matrix(1:n^2, n,n)
g <-  graph.adjacency(mat, mode="directed", weighted=TRUE, diag=FALSE)
V(g)$color <- "white"
id <- tkplot(g, 200, 200, edge.curved = 0.5)
coor <- tkplot.getcoords(id,norm=F)
canvas_height <- as.numeric(tcltk::tkcget(tk_canvas(id), "-height"))-20 # twenty by trial&error - prly the frame border top&bottom?
coor[,2] <- canvas_height-coor[,2]
# move some vertices and...
tkplot.setcoords(id, coor) # reset
库(igraph)
结实。种子(1);N