将VisNetwork(R)图导出到Gephi

时间:2019-07-09 09:11:49

标签: r networking shiny gephi visnetwork

我目前正在使用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

最后,我可能必须编写一个将图形数据写入文本文件的函数。您认为这样做的最佳方法是什么?我应该为特定格式设置特权吗?

谢谢。

2 个答案:

答案 0 :(得分: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

然后,我们去gephi,然后:

文件->导入电子表格

请注意:

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

答案 1 :(得分:0)

几天后,我oo无声,继续挖掘。确实,无法将数据直接从VisNetwork图中导出到Gephi。我发现最有效的方法是将其硬写入GEXF文件。有点乏味,但是您的数据将毫无问题地加载到Gephi中。