将 VisNetwork 图导出到 Gephi

问题描述 投票:0回答:3

我的 R/Shiny 应用程序使用 VisNetwork 生成网络图。我需要将它们导出到 Gephi。什么是最好的方法?节点颜色、线宽、背景颜色(以及一般的美观)并不重要。我想导出数据。在 Gephi 中我应该得到类似的情节。

根据 Gephi 的文档 最佳格式是 GEFX(边权重、层次结构和 XML 结构)或 CSV(边列表/矩阵)。但是,VisNetwork 不导出这些格式。 Gephi 可以导出可以用 VisNetwork 打开的 JSON 文件,但反之则不行。 VisNetwork 有

visNetwork(gephi = 'network.json')
但它不导出 JSON 文件,只能导入。
visExport()
只允许导出图像(png/jpg/pdf)。

VisNetwork情节:

nodes <- data.frame(id = 1:10, label = paste("Label", 1:10),
   group = sample(c("A", "B"), 10, replace = TRUE))

edges <- data.frame(from = c(2,5,10), to = c(1,2,10))
network <- visNetwork(nodes, edges, height = "400px", width = "100%")

visNetwork(gephi = 'network.json') #does not work

我可能需要编写一个将图形数据写入文本文件的函数。最好的方法是什么?我应该优先考虑特定格式吗?

r shiny gephi visnetwork
3个回答
1
投票

我知道有点晚了,但无论如何我都会尽力提供帮助。 Gephi 可以很好地读取 CSV 文件中的交互。所以:

R

你的例子几乎没问题,只是边缘有一点变化列名称

nodes <- data.frame(id = 1:10, label = paste("Label", 1:10), 
   group = sample(c("A", "B"), 10, replace = TRUE))

edges <- data.frame(from = c(2,5,10), to = c(1,2,10))
colnames(edges)<-c('source', 'target')

然后您应该导出为 CSV:

write.csv(edges,'edges.csv')
write.csv(nodes,'nodes.csv')

格菲

然后,我们转到 gephi 并:

文件 -> 导入电子表格

请注意:

  1. 您必须一次导入一个文件的边和节点
  2. 您必须将两个 csv 文件导入到同一个“工作区”,否则您将有两个不同的图形(空边和空节点)

1
投票

几天后,我没有得到答案,并进行了更多研究。事实上,无法将数据从 VisNetwork 图直接导出到 Gephi。我发现最有效的方法是硬写入 GEXF 文件。这有点乏味,但您的数据将毫无顾虑地加载到 Gephi 中。


0
投票

如果您想将图形作为一个文件从 R 导出到 Gephi,您可以将其写入 GraphML,如下所示:

igraph::write_graph(graph, format = c("graphml"))

然后导入Gephi。

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