Skip to content

A directed multi-graph library for JavaScript

License

Notifications You must be signed in to change notification settings

dejavuapt/graphlib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Graphlib

Graphlib is a JavaScript library that provides an implementation of a directed multi-graph. This library is used as part of the dagre library, but is available here in a light-weight, standalone form.

Build Status

browser support

Build / Install

Before building this library you need to install the npm package manager.

To get graphlib from npm, use:

$ npm install graphlib

Example

var Graph = require("graphlib").Graph;

// Create a new empty graph
var g = new Graph();

// Add node "A" to the graph with no value
g.addNode("A");

// This returns true
g.hasNode("A");

// Add node "B" to the graph with a String value
g.addNode("B", "B's value");

// Prints `B's value`
console.log(g.node("B"));

// Add node "C" to the graph with an Object value
g.addNode("C", { k: 123 });
g.addNode("D");

// Prints `[ 'A', 'B', 'C', 'D' ]`
console.log(g.nodes());

// Add a directed edge with the ID "AB" from "A" to "B", but assign no value
g.addEdge("AB", "A", "B");

// Add a directed edge with no ID (Graph will assign one) from "B" to "C"
g.addEdge(null, "B", "C");

// Add a directed edge from "C" to "D" with an Object value
g.addEdge("CD", "C", "D", { k: 456 });

// Since Graph is a multi-graph, we can have multiple edges incident on the
// same source and target nodes.
g.addEdge("AB2", "A", "B");

// Prints `[ 'AB', '_ANON-1', 'CD', 'AB2' ]`. `_ANON-1` is the edge from "B" to "C"
console.log(g.edges());

// Which edges go from "A" to "B"? This prints `[ 'AB', 'AB2' ]`
console.log(g.edges("A", "B"));

// Which edges are incident on "D"? This prints `[ 'CD' ]`
console.log(g.edges("D"));

// How about a subgraph?
var g2 = g.subgraph(["A", "B", "C"]);

// Prints `[ 'A', 'B', 'C' ]`
console.log(g2.nodes());

// Prints `[ 'AB', '_ANON-1', 'AB2' ]`. Note that edges that have both their
// source and target nodes in the graph are also included in the subgraph.
console.log(g2.edges());

API

API documentation

License

Graphlib is licensed under the terms of the MIT License. See the LICENSE file for details.

About

A directed multi-graph library for JavaScript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 96.4%
  • Makefile 2.0%
  • Shell 1.6%