Animations

Chart.js animates charts out of the box. A number of options are provided to configure how the animation looks and how long it takes

Animation Configuration

The following animation options are available. The global options for are defined in Chart.defaults.global.animation.

Name Type Default Description
duration Number 1000 The number of milliseconds an animation takes.
easing String 'easeOutQuart' Easing function to use. more...
onProgress Function null Callback called on each step of an animation. more...
onComplete Function null Callback called at the end of an animation. more...

Easing

Available options are:

  • 'linear'
  • 'easeInQuad'
  • 'easeOutQuad'
  • 'easeInOutQuad'
  • 'easeInCubic'
  • 'easeOutCubic'
  • 'easeInOutCubic'
  • 'easeInQuart'
  • 'easeOutQuart'
  • 'easeInOutQuart'
  • 'easeInQuint'
  • 'easeOutQuint'
  • 'easeInOutQuint'
  • 'easeInSine'
  • 'easeOutSine'
  • 'easeInOutSine'
  • 'easeInExpo'
  • 'easeOutExpo'
  • 'easeInOutExpo'
  • 'easeInCirc'
  • 'easeOutCirc'
  • 'easeInOutCirc'
  • 'easeInElastic'
  • 'easeOutElastic'
  • 'easeInOutElastic'
  • 'easeInBack'
  • 'easeOutBack'
  • 'easeInOutBack'
  • 'easeInBounce'
  • 'easeOutBounce'
  • 'easeInOutBounce'

See Robert Penner's easing equations.

Animation Callbacks

The onProgress and onComplete callbacks are useful for synchronizing an external draw to the chart animation. The callback is passed a Chart.Animation instance:

{
    // Chart object
    chart: Chart,
    // Current Animation frame number
    currentStep: Number,
    // Number of animation frames
    numSteps: Number,
    // Animation easing to use
    easing: String,
    // Function that renders the chart
    render: Function,
    // User callback
    onAnimationProgress: Function,
    // User callback
    onAnimationComplete: Function
}

The following example fills a progress bar during the chart animation.

var chart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        animation: {
            onProgress: function(animation) {
                progress.value = animation.animationObject.currentStep / animation.animationObject.numSteps;
            }
        }
    }
});

Another example usage of these callbacks can be found on Github: this sample displays a progress bar showing how far along the animation is.

results matching ""

    No results matching ""