Создайте динамический объект Graph для Gephi с помощью igraph и rgefx в R - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь создать динамический сетевой график соавторства в Gephi из данных .csv, которые я предварительно обрабатываю в R с помощью igraph и rgefx.

Мои необработанные данные поступают в виде списка ДОКУМЕНТОВ(Doc), идентифицируемый номером (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 и, наконец, написать файл .gefx для использования в нем Gephi, используя следующий код:

    #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)

Теперь у меня возникла проблема.Я могу использовать этот же подход, чтобы поместить даты в АВТОРСКИЕ УЗЛЫ, но я не могу понять, как применять даты к EDGES (которые действительно являются датами, это дата представления документа.

И как только данные проходят этап "xtabs (~ Author + Doc, dat)", а затем этап tcrossprod (dat2), похоже, он теряет связь между DOC и SUBMISSIONDATE.

Я счастлив иметь «EndDate» от 01.06.2009 для всех точек данных, поскольку все Документы переходят в бесконечность.

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)

В конечном итоге мне нужен объект DYNAMIC Graph для Gephi, который имеетАтрибуты даты сдачи для EDGES , а не только для узлов.

Если бы я мог получить ДИНАМИЧЕСКИЙ ОБЪЕКТ ГРАФИКА, это было бы здорово, но если бы я мог получить только файл .gexf сКРАТКИЕ АТРИБУТЫ даты представления Я могу работать с этим в Gephi.

Спасибо!

...