编写图形并保留顶点名称
Writing a graph and keeping the vertex names
我正在尝试创建一个图形,然后使用函数 write.graph
(程序包 igraph
)编写它。因此,我创建了距离矩阵
require(vegan)
data(dune)
dis <- vegdist(dune)
然后我明确定义行名:
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")
得到下图:
名字丢失了!
然而,如果我使用不同格式的相同函数:
write.graph(gg_mst, "graph.txt", format="ncol")
我获得了一个保存行名的文件:
dune1 dune3 0.448275862068966
dune2 dune3 0.341463414634146
dune2 dune10 0.294117647058824
dune3 dune4 0.270588235294118
... ... ...
是否与使用格式为“pajek”的 write.graph
相关的错误?
您需要为顶点分配 id 属性,以便能够在 pajek 查看器中显示顶点的名称,例如这个 http://vlado.fmf.uni-lj.si/pub%20/networks/pajek/default.htm 或盖菲。需要像下面这样修改几行代码:
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。
我正在尝试创建一个图形,然后使用函数 write.graph
(程序包 igraph
)编写它。因此,我创建了距离矩阵
require(vegan)
data(dune)
dis <- vegdist(dune)
然后我明确定义行名:
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")
得到下图:
名字丢失了!
然而,如果我使用不同格式的相同函数:
write.graph(gg_mst, "graph.txt", format="ncol")
我获得了一个保存行名的文件:
dune1 dune3 0.448275862068966
dune2 dune3 0.341463414634146
dune2 dune10 0.294117647058824
dune3 dune4 0.270588235294118
... ... ...
是否与使用格式为“pajek”的 write.graph
相关的错误?
您需要为顶点分配 id 属性,以便能够在 pajek 查看器中显示顶点的名称,例如这个 http://vlado.fmf.uni-lj.si/pub%20/networks/pajek/default.htm 或盖菲。需要像下面这样修改几行代码:
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。