@plotset/animation
Version:
AnimatedChartModule - An Interactive Data Visualization Tool\n\nAnimatedChartModule is a powerful Node.js module designed for developers who work with data visualization, particularly in JavaScript using D3.js. This module empowers you to create stunning
107 lines (103 loc) • 2.16 kB
Markdown
# @plotset/animation
`@plotset/animation` is a free npm package that you can use to create your animated data visualizations charts with.
## Usage
In order to use this package you should first **import** it:
```
const { Animation } = require("@plotset/animation")
```
In order to use `Animation` class you need your inputs to be in this format:
```
const data = [
{
"Browser": "Edge",
"11/1/2017": "4.43",
"11/1/2018": "4.38",
"11/1/2019": "4.6"
},
{
"Browser": "Chrome",
"11/1/2017": "59",
"11/1/2018": "62.8",
"11/1/2019": "57"
},
...
]
const col_rel = {
values: ["11/1/2017", "11/1/2018", "11/1/2019"],
labels: "Browser"
}
const duration = 60
```
Then you can create your animation object like this:
```
const animation = new Animation(duration , data, col_rel["values"])
```
Now add your drawing chart functions to your `animation` object:
```
function drawRaceBar(frame, transitionTime){
// code ...
}
function drawRacePie(frame, transitionTime){
// code ...
}
const charts = [
drawRaceBar,
drawRacePie,
...
]
animation.addCharts(charts)
```
At the end you can call `play()` and `pause()` in your code like this:
```
animation.play()
animation.pause()
```
## Drawing functions
**What can be done in drawing functions you pass to `animation`:**
- Create a data visualization chart with desired library like `D3.js` , `Chart.js` , `Highcharts` , `Recharts` , `Flexmonster` , `Chartkick` , . . .
- Update each frame with given frame data and transition time(ms)
**What parameters drawing functions will get at each pulse:**
```
function drawingFunction(frame, transitionTime){
const { data, sortedData, date } = frame
// . . .
}
```
**data:**
```
[
{
"Browser": "Edge",
"11/1/2017": "4.43"
},
{
"Browser": "Chrome",
"11/1/2017": "59",
}
]
```
**sorted data:**
```
[
{
"Browser": "Chrome",
"11/1/2017": "59",
},
{
"Browser": "Edge",
"11/1/2017": "4.43"
}
]
```
**date:**
```
{
ISO: "2017-11-01T00:00:00.000Z",
raw: "11/1/2017",
time: 1509494400000
}
```
**transitionTime:**
```
2000
```