chartjs-plugin-downsample

Chart.js plugin to downsample chart data

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
chartjs-plugin-downsample
1.1.05 years ago7 years agoMinified + gzip package size for chartjs-plugin-downsample in KB

Readme

chartjs-plugin-downsample
Plugin for downsampling data in Chart.js, based off of sveinn-steinarsson/flot-downsample.
NPM

Samples




Configuration

The configuration for this plugin lives in chartInstance.options.downsample. This looks like the following while setting up your chart:
{
    options: {
        downsample: {
            enabled: true,
            threshold: 500 // max number of points to display per dataset
        }
    }
}

Additional Options

| Option | Default | Description | | --------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | auto | true | If true, downsamples data automatically every update. Otherwise, chart will have to be manually downsampled with .downsample() | | onInit | true | If true, downsamples data when the chart is initialized. | | restoreOriginalData | true | If true, replaces the downsampled data with the original data after each update. This is, mainly, for compatibility with other plugins. | | preferOriginalData | false | If true, downsamples original data instead of data. This option can clash with dynamically-added data. If false, data cannot be "un-downscaled". | | targetDatasets | | An array of dataset IDs that you want to downsample. If empty or not set, downsamples all datasets. |

Methods

| Method | Description | | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | | chartInstance.downsample(var threshold = null) | Manually downsamples the data on the given chart. If a threshold is passed, updates the threshold in the chart config to the given value. |

Optimal Performance

This plugin was created because of performance issues while loading lots of data in a chart with pan/zoom capabilites.
If options are not changed from their defaults, data will be downsampled every time the user pans or zooms - this is probably not what you want. For a more performant configuration, try this:
{
    options: {
        downsample: {
            enabled: true,
            threshold: <YOUR THRESHOLD HERE>, // change this

            auto: false, // don't re-downsample the data every move
            onInit: true, // but do resample it when we init the chart (this is default)

            preferOriginalData: true, // use our original data when downscaling so we can downscale less, if we need to.
            restoreOriginalData: false, // if auto is false and this is true, original data will be restored on pan/zoom - that isn't what we want.
        }
    }
}

Building

npm run build will generate a browser-ready chartjs-plugin-downsample.js and chartjs-plugin-downsample.min.js

License

chartjs-plugin-downsample is released under the terms of the MIT License.