Координаты в игре в R

Я пытаюсь 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 

1 ответ

Знаете ли вы, есть ли хитрость, чтобы избежать его применения дважды?

Кажется, как будто вы должны были перевернуть координаты у; это работает на моем компьютере:

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
Другие вопросы по тегам