sigma
Version:
A JavaScript library dedicated to graph drawing.
80 lines (52 loc) • 2.59 kB
Markdown
sigma.layout.forceAtlas2
========================
Algorithm by [Mathieu Jacomy](https://github.com/jacomyma).
Plugin by [Guillaume Plique](https://github.com/Yomguithereal).
---
This plugin implements [ForceAtlas2](http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0098679), a force-directed layout algorithm.
For optimization purposes, the algorithm's computations are delegated to a web worker.
## Methods
**sigma.startForceAtlas2**
Starts or unpauses the layout. It is possible to pass a configuration if this is the first time you start the layout.
```js
sigmaInstance.startForceAtlas2(config);
```
**sigma.stopForceAtlas2**
Pauses the layout.
```js
sigmaInstance.stopForceAtlas2();
```
**sigma.configForceAtlas2**
Changes the layout's configuration.
```js
sigmaInstance.configForceAtlas2(config);
```
**sigma.killForceAtlas2**
Completely stops the layout and terminates the assiociated worker. You can still restart it later, but a new worker will have to initialize.
```js
sigmaInstance.killForceAtlas2();
```
**sigma.isForceAtlas2Running**
Returns whether ForceAtlas2 is running.
```js
sigmaInstance.isForceAtlas2Running();
```
## Configuration
*Algorithm configuration*
* **linLogMode** *boolean* `false`: switch ForceAtlas' model from lin-lin to lin-log (tribute to Andreas Noack). Makes clusters more tight.
* **outboundAttractionDistribution** *boolean* `false`
* **adjustSizes** *boolean* `false`
* **edgeWeightInfluence** *number* `0`: how much influence you give to the edges weight. 0 is "no influence" and 1 is "normal".
* **scalingRatio** *number* `1`: how much repulsion you want. More makes a more sparse graph.
* **strongGravityMode** *boolean* `false`
* **gravity** *number* `1`: attracts nodes to the center. Prevents islands from drifting away.
* **barnesHutOptimize** *boolean* `true`: should we use the algorithm's Barnes-Hut to improve repulsion's scalability (`O(n²)` to `O(nlog(n))`)? This is useful for large graph but harmful to small ones.
* **barnesHutTheta** *number* `0.5`
* **slowDown** *number* `1`
* **startingIterations** *integer* `1`: number of iterations to be run before the first render.
* **iterationsPerRender** *integer* `1`: number of iterations to be run before each render.
*Supervisor configuration*
* **worker** *boolean* `true`: should the layout use a web worker?
* **workerUrl** *string* : path to the worker file if needed because your browser does not support blob workers.
## Notes
1. The layout won't stop by itself, so if you want it to stop, you will have to trigger it explicitly.