我的 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
我可能需要编写一个将图形数据写入文本文件的函数。最好的方法是什么?我应该优先考虑特定格式吗?
我知道有点晚了,但无论如何我都会尽力提供帮助。 Gephi 可以很好地读取 CSV 文件中的交互。所以:
你的例子几乎没问题,只是边缘有一点变化列名称:
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 并:
文件 -> 导入电子表格
请注意:
几天后,我没有得到答案,并进行了更多研究。事实上,无法将数据从 VisNetwork 图直接导出到 Gephi。我发现最有效的方法是硬写入 GEXF 文件。这有点乏味,但您的数据将毫无顾虑地加载到 Gephi 中。
如果您想将图形作为一个文件从 R 导出到 Gephi,您可以将其写入 GraphML,如下所示:
igraph::write_graph(graph, format = c("graphml"))
然后导入Gephi。