Graph software

Software, formats, and systems for working with graphs. There are dedicated pages for graph databases and the literature on graph algorithms.

Software

Python

General commentary on Python graph APIs .

R

  • graph and Rgraphviz (Bioconductor)
    • Rare but usable Artistic 2.0 license
    • Arbitrary node/edge attributes (vignette )
    • Graphs are immutable (modifying nodes/edges creates new graph)
    • Graphs are simple but there is an “experimental” MultiGraph
  • igraph (CRAN), GPL
    • Edge list representation, implemented in C, but conversion to/from adjacency list
    • Arbitrary graph/node/edge attributes
    • Only “limited support” for multigraphs
  • network (CRAN), GPL
    • Edge list representation, implemented in C
    • Arbitrary graph/node/edge attributes
    • “Native support” for multigraphs and even hypergraphs

Julia

  • LightGraphs.jl : the new standard, inspired by NetworkX
  • Graphs.jl : the old standard but now phased out, inspired by the Boost Graph Library
  • MetaGraphs.jl : extends LightGraphs with graph/vertex/edge properties
  • Graft.jl : interesting but immature, emphasis on queries and data analysis

JavaScript

Data structures, layout, and visualization for graphs, partly taken from the StackOverflow list :

  • Viz.js : GraphViz in JS via Emscripten
  • JSNetworkX : Port of NetworkX to JS
    • Partial port: core functionality in place, most algorithms missing
    • Not maintained: Last update in 2015
  • Cytoscape.js : active, mature, well-documented
    • Some algorithms, mostly visualization
    • No typings for TypeScript
    • R interface through RCyjs
  • KLayJS : KIELER ’s layout algorithms for JS

Visualization for dataflow programming. These libraries tend to come equipped with useless execution engines but also to visualize port graphs as first-class entities.

Commercial libraries:

Formats

XML formats:

  • GraphML (primer ): widely supported, default in yEd
    • Advanced features: hypergraphs, nested graphs, ports
  • GEXF (primer ): default in Gephi
    • Advanced features: nested graphs, dynamics (discrete and continuous time)
    • Gephi’s overview of graph data formats

JSON and related formats:

The JSON formats are all about the same, with a list of nodes and a list of edges as top-level properties of a graph object.