Data Transformation
By, default, the loaded data is used as is.
However, it is possible to transform the data before it is used in the chart, by one of these ways:
dataTransform
function
The chart options can have a dataTransform
function which can be used to transform the data before it is used in the chart. It receives the loaded data and returns the transformed data.
Example:
import { race } from 'racing-bars';
const options = {
dataTransform: (data) =>
data.map((d) => ({
...d,
icon: `https://flagsapi.com/${d.code}/flat/64.png`,
})),
title: 'World Population',
// ...
};
race('/data/population.csv', '#race', options);
Manually loading and transforming data
The loadData
function can be used to load data. It can then be transformed before it is used in the chart.
import { loadData, race } from 'racing-bars';
const data = await loadData('/data/population.csv', 'csv');
const transformedData = data.map((d) => ({
...d,
icon: `https://flagsapi.com/${d.code}/flat/64.png`,
}));
const options = {
title: 'World Population',
// ...
};
race(transformedData, '#race', options);
startDate
and endDate
options
The data can be filtered by setting the startDate
and endDate
options.
import { race } from 'racing-bars';
const options = {
title: 'World Population',
startDate: '1970-01-01',
endDate: '1999-12-31',
};
race('/data/population.csv', '#race', options);
makeCumulative
option
The data values can be converted to cumulative sums (running totals) by setting the makeCumulative
option to true
.
import { race } from 'racing-bars';
const options = {
title: 'Github Stars',
makeCumulative: true,
// ...
};
race('/data/gh-star.csv', '#race', options);
valueDecimals
option
In case you just need to control the number of decimal places to display for values, you do not need to transform the data. You may just use the valueDecimals
option.
import { race } from 'racing-bars';
const options = {
title: 'World Population',
valueDecimals: 0,
// ...
};
race('/data/population.csv', '#race', options);
Filling gaps in data
Dates that are missing from data will be skipped.
If you need to fill date gaps, you may use the options fillDateGapsInterval
and fillDateGapValue
.
import { race } from 'racing-bars';
const options = {
fillDateGapsInterval: 'month',
fillDateGapsValue: 'interpolate',
valueDecimals: 2,
};
race('/data/population.csv', '#race', options);