首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写一个图并保留顶点名

编写一个图并保留顶点名
EN

Stack Overflow用户
提问于 2016-12-12 14:07:29
回答 1查看 585关注 0票数 3

我正在尝试创建一个图,然后用函数write.graph (package igraph)编写它。因此,我创建了距离矩阵。

代码语言:javascript
复制
require(vegan)
data(dune)
dis <- vegdist(dune)

然后我显式地定义行名:

代码语言:javascript
复制
x <- c("dune1")
for (i in 1: 20){
  n <- paste("dune", i, sep="")
  x <- append(x, n)

}
rownames(dune) <- x

通过下面的过程,我通过最小生成树算法创建了一个无向图。

代码语言:javascript
复制
gg  <- graph.adjacency(as.matrix(dis), weighted=TRUE)
gg_mst <- as.undirected(mst(gg))

在这一点上,我想用pajek来表示它。为了做到这一点,我使用了write.graph:

代码语言:javascript
复制
write.graph(gg_mst, "graph.net", format="pajek")

获得以下图表:

名字不见了!

然而,如果我使用不同的格式使用相同的函数:

代码语言:javascript
复制
write.graph(gg_mst, "graph.txt", format="ncol")

我获得一个保存行名的文件:

代码语言:javascript
复制
dune1 dune3 0.448275862068966
dune2 dune3 0.341463414634146
dune2 dune10 0.294117647058824
dune3 dune4 0.270588235294118
...   ...   ...

这是一个与使用write.graph格式"pajek“有关的bug吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-13 19:17:54

您需要分配顶点的id属性,这样才能在pajek查看器中显示顶点的名称,比如这个http://vlado.fmf.uni-lj.si/pub%20/networks/pajek/default.htm或gephi。需要修改代码的几行代码,如下所示:

代码语言:javascript
复制
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开头正确显示顶点ids。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41102691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档