Ngraph is a set of graph related algorithms. It can be used in a browser or on the server side. This repository is a collection of examples, which show how to use some of them or build your own.
What is available?
At the core of the library is ngraph.graph package, which simply represents a graph data structure.
- Dot files serializer from/to
gexffile - Source; Demo
- Binary format - space-efficient format for large graphs. E.g. 5 million edges, 1 million nodes requires only 23 MB of space.
Sometimes doing layout in the browser is not feasible (e.g. the graph is too large to achive decent performance). In that case we can compute layout offline and provide static positions to the browser.
- ngraph.offline.layout is an npm module to perform such layout. If this module is too slow, you can also try:
This is set of libraries that use ngraph modules to provide rendering in the browser:
- VivaGraph, one of the fastest graph drawing libraries is now constructed from ngraph modules. It is an opinionated set of modules packed together.
- ngraph.pixel - Fast 3D graph renderer based on low level ShaderMaterial from three.js
- ngraph.cw - fast community detection algorithm, based on label propagation
- ngraph.louvain - another state of the art algorithm, uses modularity optimization.
- ngraph.pagerank - computes PageRank of a graph.
- ngraph.hits - alternative to PageRank. Implements Hubs and authorities (HITS) algorithm
There are plenty modules within ngraph family: this npm search shows most of them
Building your own modules
This repository has multiple examples how to build your own module which suits your needs best:
- Rendering graphs with PIXI.js
- Rendering graphs with fabric.js
- Rendering graph from terminal
- Rendering 3D graphs
However vivagraph is built in monolithic way. For example, if I wanted to add new streaming traversal API I could not justify it inside monolithic "graph drawing" library.
Ngraph opens huge possibilities, with each module being available on npm. Now you can pick just what you need and swap out parts which are not relevant to your project.
I'm not abandoning vivagraph by any means. Quite the opposite, this repository is a next step of evolution.
How to run examples locally?
ngraph is powered by
npm. All examples require a
bundle.js file, which is produced by executing
npm start command inside folder with example. Make sure you have all modules installed inside a folder (
npm install inside folder with example will download all dependencies).
Looking for alternatives?
I'm trying to put up a list of all known graph drawing libraries. Please find it here