我目前正在使用R / Shiny应用程序,该应用程序使用VisNetwork框架生成网络图。我的同事需要我将生成的地块导出到Gephi 。我已经研究了所有可能的选项,但是没有一个是理想的。 将VisNetwork图形导出到Gephi的最佳方法是什么?
节点颜色,线宽,背景颜色...都没关系-实际上,总体而言美观并不重要。我们要做的只是将数据导出到Gephi中。将数据加载到Gephi中后,我们应该得到一个相似的图,尽管美学不同。
现在,有多种选项可以将文件加载到Gephi中。当我们查看Gephi's documentation时,可以看到最佳格式为 GEFX (具有边缘权重,层次结构和XML结构)或 CSV (具有边缘列表/矩阵结构)。
但是, VisNetwork不允许导出为这些格式。
Gephi可以导出JSon文件,然后可以使用VisNetwork打开该文件-但似乎不可能做到这一点。确实,VisNetwork具有功能visNetwork(gephi = 'network.json')
,但它似乎不允许导出json文件,只能导入。
VisNetwork也提供了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
最后,我可能必须编写一个将图形数据写入文本文件的函数。您认为这样做的最佳方法是什么?我应该为特定格式设置特权吗?
谢谢。
答案 0 :(得分:1)
我知道现在有点晚了,但是无论如何我都会尽力帮助。 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,然后:
文件->导入电子表格
请注意:
答案 1 :(得分:0)
几天后,我oo无声,继续挖掘。确实,无法将数据直接从VisNetwork图中导出到Gephi。我发现最有效的方法是将其硬写入GEXF文件。有点乏味,但是您的数据将毫无问题地加载到Gephi中。