2016-12-12 60 views
2

我試圖創建一個圖形,然後用函數write.graph(包igraph)將其寫入。因此,我創建距離矩陣編寫圖形並保留頂點名稱

require(vegan) 
data(dune) 
dis <- vegdist(dune) 

,然後我定義明確的rownames:

x <- c("dune1") 
for (i in 1: 20){ 
    n <- paste("dune", i, sep="") 
    x <- append(x, n) 

} 
rownames(dune) <- x 

下列程序創建通過最小生成樹算法的無向圖。

gg <- graph.adjacency(as.matrix(dis), weighted=TRUE) 
gg_mst <- as.undirected(mst(gg)) 

在這一點上,我想代表它,以便用pajek打開它。爲了做到這一點我用write.graph:

write.graph(gg_mst, "graph.net", format="pajek") 

,獲得以下圖表: enter image description here

的名稱都將丟失!

不過,如果我使用不同的格式中使用相同的功能:

write.graph(gg_mst, "graph.txt", format="ncol") 

我獲得文件保持rownames:

dune1 dune3 0.448275862068966 
dune2 dune3 0.341463414634146 
dune2 dune10 0.294117647058824 
dune3 dune4 0.270588235294118 
... ... ... 

是否涉及與使用write.graph錯誤格式「pajek」?

回答

2

您需要指定id頂點的屬性,以便能夠在pajek查看器中顯示頂點的名稱,例如這個http://vlado.fmf.uni-lj.si/pub%20/networks/pajek/default.htm或gephi。需要修改你的代碼的幾行類似如下:

dis <- vegdist(dune) 
x <- c() 
for (i in 1: 20){ 
    n <- paste("dune", i, sep="") 
    x <- append(x, n) 
} 
gg <- graph.adjacency(as.matrix(dis), weighted=TRUE) 
gg_mst <- as.undirected(mst(gg)) 
V(gg_mst)$id <- x # assign the ids 
write.graph(gg_mst, "graph.net", format="pajek") 

洞口pajek正確顯示頂點的ID。

enter image description here