Chart.js ^3.3 module for creating sankey diagrams
All modern and up-to-date browsers are supported, including, but not limited to:
Internet Explorer 11 is not supported.
Typescript 3.x and higher is supported.
You can use chartjs-chart-sankey.js as ES module. You'll need to manually register two components
import {Chart} from 'chart.js'; import {SankeyController, Flow} from 'chartjs-chart-sankey'; Chart.register(SankeyController, Flow);
To create a sankey chart, include chartjs-chart-sankey.js after chart.js and then create the chart by setting the type
attribute to 'sankey'
const chart = new Chart(ctx, { type: 'sankey', data: dataObject });
Example:
const colors = { a: 'red', b: 'green', c: 'blue', d: 'gray' }; const getHover = (key) => colors[key]; const getColor = (key) => colors[key]; const chart = new Chart(ctx, { type: 'sankey', data: { datasets: [{ label: 'My sankey', data: [ {from: 'a', to: 'b', flow: 10}, {from: 'a', to: 'c', flow: 5}, {from: 'b', to: 'c', flow: 10}, {from: 'd', to: 'c', flow: 7} ], colorFrom: (c) => getColor(c.dataset.data[c.dataIndex].from), colorTo: (c) => getColor(c.dataset.data[c.dataIndex].to), hoverColorFrom: (c) => getHover(c.dataset.data[c.dataIndex].from), hoverColorTo: (c) => getHover(c.dataset.data[c.dataIndex].to), colorMode: 'gradient', // or 'from' or 'to' /* optionally override default alpha (0.5) applied to colorFrom and colorTo */ alpha: 1, /* optional labels */ labels: { a: 'Label A', b: 'Label B', c: 'Label C', d: 'Label D' }, /* optional priority */ priority: { b: 1, d: 0 }, /* optional column overrides */ column: { d: 1 }, size: 'max', // or 'min' if flow overlap is preferred }] }, });
Custom data structure can be used by specifying the custom data keys in options.parsing
. For example:
const chart = new Chart(ctx, { type: 'sankey', data: { datasets: [ { data: [ {source: 'a', destination: 'b', value: 20}, {source: 'c', destination: 'd', value: 10}, {source: 'c', destination: 'e', value: 5}, ], colorFrom: 'red', colorTo: 'green' } ] }, options: { parsing: { from: 'source', to: 'destination', flow: 'value' } } });
You first need to install node dependencies (requires Node.js):
The following commands will then be available from the repository root:
> npm run build // build dist files > npm run autobuild // build and watch for changes > npm test // run all tests > npm autotest // run all tests and watch for changes > npm lint // perform code linting > npm package // create an archive with dist files and samples
chartjs-chart-sankey is available under the MIT license.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4