是否有一个程序包可以将network()或igraph()网络转换为R中兼容的Rgraphviz?

问题描述 投票:4回答:2

以SNA和igraph软件包中用于分析的格式花费了很多时间来格式化网络。这些与Rgraphviz所需的数据类型之间是否有桥梁?我的意思是说,它保留:源到目标,标签,边缘权重,其他属性,例如颜色,等等。

r graphviz igraph
2个回答
4
投票

是的,非常容易,在the igraph documentation中清楚:

write.graph(mygraph, file="filename", format="dot")

0
投票

我没有找到要在igraph中转换Rgraphviz的任何程序包,但这是不保存文件的一种方法。函数graph::graphAM接收到一个邻接矩阵,可以使用函数igraphigraph::get.adjacency中获得。

使用这种方法,如果您具有链接到节点或边的任何功能,则需要单独添加它们。

library(tidyverse)

# Create the Data
actors <- data.frame(name=c("Alice", "Bob", "Cecil", "David",
                        "Esmeralda"),
                 age=c(48,33,45,34,21),
                 gender=c("F","M","F","M","F"))
relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David",
                           "David", "Esmeralda"),
                    to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"),
                    same.dept=c(FALSE,FALSE,TRUE,FALSE,FALSE,TRUE),
                    friendship=c(4,5,5,2,1,1), advice=c(4,5,5,4,2,3))

# Create the igraph object
g <- igraph::graph.data.frame(relations, directed=TRUE, vertices=actors)

# transform igraph object in graph which will be used in Rgraphviz
graph::graphAM(igraph::get.adjacency(g) %>% as.matrix(),
           edgemode = 'directed') %>%
  Rgraphviz::layoutGraph() %>%
  Rgraphviz::renderGraph()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.