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
- NetworkX : the standard, pure Python
- igraph : C++ core with Python and R bindings, looks nice but GPL license
- graph-tool : new-comer, based on Boost Graph Library , looks nice but GPL license
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.
- Rete.js : visual programming framework (GitHub , HN )
- Flow graph editor inspired by Yahoo Pipes
- UI framework agnostic; uses Vue by default with no official React support
- Lightgraph.js : graph node engine and editor (GitHub )
- Renders in HTML5 Canvas
- Not possible to embed? (#58 )
- NoFlo : flow-based programming for JS (GitHub )
- Basis for Flowhub IDE
- Visually attractive flow graph editor in the-graph component
- Nodes are fixed size, which has pros and cons (#273 , #275 )
- Not possible to embed? (#160 )
Commercial libraries:
- yFiles for HTML : Includes Graphviz-grade layouts
- Rappid : Build diagram editing tools for the web
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:
- GML (report ): custom syntax based on hierarchical key-value pairs
- GraphSON : only supported by TinkerPop3
- JGF (schema ): JSON Graph Format (GitHub )
- Proposed standard, currently little or no uptake
- JSON KGraph : KIELER ’s graph format
- Advanced features: nested graphs, ports, layout information
- Supported by KLayJS (see above)
- Related to, possibly identical with, ELK’s JSON format and supported by elkjs (again, see above)
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.