我正在尝试根据.csv数据在Gephi中创建一个共同创作的动态网络图,我使用igraph和rgefx在R中对其进行了预处理。
我的原始数据以由数字(1,2,3,4 ...)和作者标识的文档(文档)列表以及作者所在城市和文档提交日期的形式出现。
第一步是使用以下代码创建我在R(版本3.4.0)中执行的入射矩阵:
library(igraph)
library(rgexf)
options(stringsAsFactors=FALSE) #make sure that countries shows up as characters for the nodes
dat<-read.csv(file.choose(),header=TRUE,encoding="UTF-8")
#read in the raw data
dat2<-xtabs(~Author+Doc,dat)
mat<-tcrossprod(dat2)
g<-graph.adjacency(mat,mode="undirected") #creates graph object for undirected graph
然后,我可以添加NODE属性,并最终使用以下代码编写一个供Gephi使用的.gefx文件:
#Time to Link "City" to "Author"
ix<-match(V(g)$name,node$Author)
V(g)$city<-node$AuthorCity[ix]
set.vertex.attribute(graph=g,name='city',value=node$AuthorCity[ix])
g2<-simplify(g,remove.loops=TRUE,remove.multiple = FALSE)
#Remove Loops from Dataset, keep duplicates
network.gexf<-igraph.to.gexf(g2)
f<-file("network_author.gexf")
writeLines(network.gexf$graph,con=f)
现在我的问题出现了。我可以使用相同的方法在AUTHOR NODES上放置日期,但是我无法弄清楚如何将日期应用于EDGES(实际上是带有日期的东西,这是文档提交的日期。
一旦数据经过“ xtabs(〜Author + Doc,dat)步骤,然后经过tcrossprod(dat2)步骤,它似乎就失去了DOC与SUBMISSIONDATE之间的连接。
我很高兴所有数据点的“截止日期”为6/1/2019,因为所有文档都将永久保留。
library(rgexf)
options(stringsAsFactors=FALSE) #make sure that countries shows up as characters for the nodes
dat<-read.csv(file.choose(),header=TRUE,encoding="UTF-8") #read in the raw data
dat2<-xtabs(~Author+Doc,dat)
mat<-tcrossprod(dat2)
g<-graph.adjacency(mat,mode="undirected") #creates graph object for undirected graph
#Time to Link "City" to "Author"
ix<-match(V(g)$name,node$Author)
V(g)$city<-node$AuthorCity[ix]
set.vertex.attribute(graph=g,name='city',value=node$AuthorCity[ix])
g2<-simplify(g,remove.loops=TRUE,remove.multiple = FALSE) #Remove Loops from Dataset, keep duplicates
network.gexf<-igraph.to.gexf(g2)
f<-file("network_author.gexf")
writeLines(network.gexf$graph,con=f)
最终,我想要Gephi的动态图对象,该对象具有 edge 的提交日期属性,而不仅仅是NODES。
如果我能得到一个很棒的动态图形对象,但是如果我能得到的只是带有提交日期的EDGE ATTRIBUTES的.gexf文件,那么我可以在Gephi中使用它。
谢谢!