## 6.5. Export to Gephi

This section describes a procedure that can be used to export data into the Gephi visualization tool.

Gephi has a streaming plugin, that can provide and accept JSON-graph-data in a streaming fashion. The export to Gephi procedure sends data to this end point.

This section includes:

- Installing the plugin
- Available Procedures
- Export Format
- Examples

### 6.5.1. Installing the plugin

Make sure to install the plugin first and activate it for your workspace (there is a new "Streaming"-tab besides "Layout"), right-click "Master"→"start" to start the server.

You can provide your workspace name (you might want to rename it before you start thes streaming), otherwise it defaults to `workspace0`

The default Gephi-URL is http://localhost:8080, resulting in `http://localhost:8080/workspace0?operation=updateGraph`

It can also be configured by adding the following to `apoc.conf`:

apoc.conf.

    apoc.gephi.url=url

or

apoc.conf.

    apoc.gephi.<key>.url=url

### 6.5.2. Available Procedure

The table below describes the available procedure:

type | qualified name | signature | description
--- | --- | --- | ---

procedure

`apoc.gephi.add`

`apoc.gephi.add(urlOrKey :: STRING?, workspace :: STRING?, data :: ANY?, weightproperty = null :: STRING?, exportproperties = [] :: LIST? OF STRING?) :: (file :: STRING?, source :: STRING?, format :: STRING?, nodes :: INTEGER?, relationships :: INTEGER?, properties :: INTEGER?, time :: INTEGER?, rows :: INTEGER?, batchSize :: INTEGER?, batches :: INTEGER?, done :: BOOLEAN?, data :: STRING?)`

apoc.gephi.add(url-or-key, workspace, data, weightproperty, ['exportproperty']) | streams passed in data to Gephi

### 6.5.3. Export Format

All nodes and relationships of the passed in data are converted into individual Gephi-Streaming JSON fragements, separated by \r\n. `\r\n`.

Example of exported JSON.

    {"an":{"123":{"TYPE":"Person:Actor","label":"Tom Hanks",                           x:333,y:222,r:0.1,g:0.3,b:0.5}}}\r\n
    {"an":{"345":{"TYPE":"Movie","label":"Forrest Gump",                               x:234,y:122,r:0.2,g:0.2,b:0.7}}}\r\n
    {"ae":{"3344":{"TYPE":"ACTED_IN","label":"Tom Hanks",source:"123",target:"345","directed":true,"weight":1.0,r:0.1,g:0.3,b:0.5}}}

Gephi doesn’t render the graph data unless you also provide x,y coordinates in the payload, so the procedures send random ones within a 1000x1000 grid.

Colors are generated per label combination and relationship-type, both of which are also transferred as `TYPE` property.

Weight properties are stored as a number (integer,float) or a string. If the weight property is invalid or null, a default value of 1.0 will be used.

### 6.5.4. Examples

You can export your graph as an unweighted network.

The following exports `ACTED_IN` paths.

    match path = (:Person)-[:ACTED_IN]->(:Movie)
    WITH path LIMIT 1000
    with collect(path) as paths
    call apoc.gephi.add(null,'workspace0', paths) yield nodes, relationships, time
    return nodes, relationships, time

You can export your graph as a weighted network, by specifying the property of a relationship, that holds the weight value.

The following exports `ACTED_IN` paths where the `weightproperty` property exists on the relationship type.

    match path = (:Person)-[r:ACTED_IN]->(:Movie) where exists r.weightproperty
    WITH path LIMIT 1000
    with collect(path) as paths
    call apoc.gephi.add(null,'workspace0', paths, 'weightproperty') yield nodes, relationships, time
    return nodes, relationships, time

You can also export with your graph other properties of your nodes and/or relationship by adding an optional array with the property names you want to export.

The following exports `ACTED_IN` paths, but only includes the `birthYear` and `role` properties.

    match path = (:Person)-[r:ACTED_IN]->(:Movie) where exists r.weightproperty
    WITH path LIMIT 1000
    with collect(path) as paths
    call apoc.gephi.add(null,'workspace0', paths, 'weightproperty',['birthYear', 'role']) yield nodes, relationships, time
    return nodes, relationships, time