将 VisNetwork (R) 图导出到 Gephi

Export a VisNetwork (R) plot to Gephi

我目前正在开发一个 R/Shiny 应用程序,该应用程序使用 VisNetwork 框架生成网络图。我的同事需要我 将生成的图导出到 Gephi。我已经查看了所有可能的选项,但其中 none 是最理想的。 将 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

最后,我可能不得不编写一个将图形数据写入文本文件的函数。在您看来,最好的方法是什么?我应该为特定格式赋予特权吗?

谢谢。

Soo 几天后我没有得到答案,于是又深入研究了它。事实上,没有办法直接将数据从 VisNetwork 图导出到 Gephi。我发现最有效的方法是 hard-write 到 GEXF 文件中。这有点乏味,但您的数据将毫无顾虑地加载到 Gephi 中。

我知道有点晚了,但无论如何我都会尽力帮忙。 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 文件导入同一个“工作区”,否则您将有两个不同的图形(空边和空节点)