Connectors
Software
Manuals
- Developer Handbook
- Build
- Code Style
- Localization
- Datasets
- Import CSV Data
- Import Dynamic Data
- Scripting Plugin
Community
Plugins
- Quick Start
- Démarrage rapide (FR)
- Layout
- Spatialisations (FR)
- Statistics
- Import
- Spigot importer with Wizard
- Export
- Generator
- Filter
- Extend Data Laboratory
- Preview renderer
- Add a module panel
- Add a submenu
- Build a plugin without Gephi source code
- Update a plugin
- Code Sharing Strategy
- Graph Streaming
Toolkit
- Toolkit Releases
- Javadoc
- How to build the Toolkit
- How to use plug-ins with the Toolkit
- How to code with the Toolkit
- Other JVM languages
Research
Clone this wiki locally
An R package to build GEXF graph files
rgexf is an R package that allows to work with GEXF format graph files (XML) reading and writing GEXF files. Its main function, write.gexf, builds gexf files which as basic arguments requires two data.frames, a nodes matrix and a edges matrix. In addition it currently supports networks dynamics such as start and end attributes (for both, nodes and edges) and spells, including attributes and viz attributes (link). Current version is rgexf v0.14.3 (march 11, 2014) and its available in The Comprehensive R Archive Network (CRAN). link.
See the gephi post.
Exporting R data to GEXF graph files (some examples)
write.gexf()
is a function that as basic arguments requires two matrices, a nodes matrix and a edges matrix, both character matrix. In addition it currently supports dynamics nodes/edges and attributes for nodes/edges.
Example 1: Static net
Creating a group of individuals and their relations
> people <- matrix(c(1:4, 'juan', 'pedro', 'matthew', 'carlos'),ncol=2)
> people
[,1] [,2]
[1,] "1" "juan"
[2,] "2" "pedro"
[3,] "3" "matthew"
[4,] "4" "carlos"
Defining the relations structure
> relations <- matrix(c(1,4,1,2,1,3,2,3,3,4,4,2), ncol=2, byrow=T)
[,1] [,2]
[1,] 1 4
[2,] 1 2
[3,] 1 3
[4,] 2 3
[5,] 3 4
[6,] 4 2
Getting things done
> write.gexf(people, relations)
output:
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft"
xmlns:viz="http://www.gexf.net/1.1draft/viz"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.gexf.net/1.2draft http://www.gexf.net/1.2draft/gexf.xsd" version="1.2">
<graph mode="static">
<nodes>
<node id="1" label="juan"/>
<node id="2" label="pedro"/>
<node id="3" label="matthew"/>
<node id="4" label="carlos"/>
</nodes>
<edges>
<edge source="1" target="4"/>
<edge source="1" target="2"/>
<edge source="1" target="3"/>
<edge source="2" target="3"/>
<edge source="3" target="4"/>
<edge source="4" target="2"/>
</edges>
</graph>
</gexf>
Example 2: Dynamic net
Defining the dynamic structure, note that there are some nodes that have NA at the end.
> time<-matrix(c(10.0,13.0,2.0,2.0,12.0,rep(NA,3)), nrow=4, ncol=2)
> time
[,1] [,2]
[1,] 10 12
[2,] 13 NA
[3,] 2 NA
[4,] 2 NA
Getting things done
> write.gexf(people, relations, nodeDynamic=time)
output
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft"
xmlns:viz="http://www.gexf.net/1.1draft/viz"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.gexf.net/1.2draft http://www.gexf.net/1.2draft/gexf.xsd" version="1.2">
<graph mode="dynamic" start="2" end="13" timeformat="double" defaultedgetype="undirected">
<nodes>
<node id="1" label="juan" start="10" end="12"/>
<node id="2" label="pedro" start="13"/>
<node id="3" label="matthew" start="2"/>
<node id="4" label="carlos" start="2"/>
</nodes>
<edges>
<edge source="1" target="4"/>
<edge source="1" target="2"/>
<edge source="1" target="3"/>
<edge source="2" target="3"/>
<edge source="3" target="4"/>
<edge source="4" target="2"/>
</edges>
</graph>
</gexf>
Example 3: Node/Edge at a time
rgexf also supports writing graphs one element at a time.
Creating an empty graph (gexf object)
> mygraph <- new.gexf.graph()
Adding some nodes
> mygraph <- add.gexf.node(mygraph, id=0, label="He")
> mygraph <- add.gexf.node(mygraph, id=1, label="Her")
Adding some edges and dynamics
> mygraph <- add.gexf.edge(mygraph, id=0, source=0, target=1, start=10, end=15)
> mygraph <- add.node.spell(mygraph, id=1, start=3, end=18)