GraphStream

GraphStream is a graph handling Java library that focuses on the dynamics aspects of graphs. Its main focus is on the modeling of dynamic interaction networks of various sizes.

The goal of the library is to provide a way to represent graphs and work on it. To this end, GraphStream proposes several graph classes that allow to model directed and undirected graphs, 1-graphs or p-graphs (a.k.a. multigraphs, that are graphs that can have several edges between two nodes).

GraphStream allows to store any kind of data attribute on the graph elements: numbers, strings, or any object.

Moreover, in addition, GraphStream provides a way to handle the graph evolution in time. This means handling the way nodes and edges are added and removed, and the way data attributes may appear, disappear and evolve.

Stream
Dynamics of graphs is modeled as stream of graph events. These events can be about the structure of the graph (add and remove elements) or about the attributes of elements (graph, node and edge attributes).



This is the list of events which can be found in GraphStream:
 * node/edge addition/deletion,
 * clear graph,
 * graph/node/edge attribute addition/change/deletion,
 * begin step.

A stream is the connection between a source providing events and a sink. Sources can be anything able to produce events, for example a source reading a file, an algorithm generating a graph ...



Visualization
GraphStream provides some features to display graphs. The rendering of elements can be customized by defining a CSS stylesheet for the graph being displayed. Viewer allows an automatic layout of nodes.