2016-12-02 58 views
2

我想知道是否有可能「保存」igraph網絡的佈局,以便其他人能夠重現相同的圖形?就目前而言,Fruchterman萊因戈爾德算法總是創造新期待網絡......R igraph - 保存佈局?

par(mfrow=c(1,2)) 
g <- erdos.renyi.game(100, 1/100) 
V(g)$size<-seq(0.05,5,0.05) 

layout <- layout.fruchterman.reingold(g) 
plot(g, 
    layout=layout, 
    vertex.label=NA) 
g 

所以基本上,我可以以某種方式保存&導出「佈局」的信息?

回答

2

設置隨機數生成器種子與set.seed()佈局之前,例如:

library(igraph) 

g <- erdos.renyi.game(100, 1/100) 
V(g)$size<-seq(0.05,5,0.05) 

par(mfrow = c(2,2)) 

layout <- layout.fruchterman.reingold(g) 
plot(g, layout=layout, vertex.label = NA, main = "No seed 1") 
layout <- layout.fruchterman.reingold(g) 
plot(g, layout=layout, vertex.label = NA, main = "No seed 2") 

set.seed(1) 
layout <- layout.fruchterman.reingold(g) 
plot(g, layout=layout, vertex.label = NA, main = "With seed 1") 
set.seed(1) 
layout <- layout.fruchterman.reingold(g) 
plot(g, layout=layout, vertex.label = NA, main = "With seed 2") 

enter image description here

3

一個的igraph佈局僅僅是具有N行和2列的矩陣狀,這樣就可以節省基質和然後再裝回。另一個選擇是將矩陣的第一列分配給名爲x的頂點屬性,將第二列分配給名爲y的vettex屬性 - 當繪製圖時未指定layout參數時,igraph將使用此佈局。