JSNetworkX

JSNetworkX is a port of the popular Python graph library NetworkX. From their website:

NetworkX is a Python language software package for the creation, manipulation, and study of the structure, dynamics, and function of complex networks.

With NetworkX you can load and store networks in standard and nonstandard data formats, generate many types of random and classic networks, analyze network structure, build network models, design new network algorithms, draw networks, and much more.

JSNetworkX aims to bring graph processing to JavaScript, client- and
server-side, and to provide an easy way to visualize graphs in the
browser.

Important!

JSNetworkX currently undergoes a major rewrite (v0.3). This will (hopefully)
make it easier for others to contribute and to maintain the library. Some of
the upcoming features / changes will be:

Node.js first: JSNetworkX will follow CommonJS module syntax and thus
make it very easy to be used with Node.js.

Web worker support in browsers: Browsers don't allow scripts to run for
a long time, however some graph algorithms take some time. To solve this,
JSNetworkX will allow to use web workers
to do the heavy computations.

Changed API conventions: We are changing from this_naming_convention to
thisNamingConvention, which is more popular in the JS community.

To find out more about the progress, have a look at the issue tracker
and the development branch. The plan is to publish
prerelease versions to npm as soon as the API documentation process works and the methods are renamed.

Note

JSNetworkX is still
in an early stage of development and only part of NetworkX has been fully ported.
The API progress page provides a list of methods and modules which are
available to use. The base graph classes and SVG drawing are already
available.

Credits

JSNetworkX and this website make use of various libraries and tools and we want to hereby thank them: