Line

    Dataset Properties

    The line chart allows a number of properties to be specified for each dataset. These are used to set display properties for a specific dataset. For example, the colour of a line is generally set this way.

    NameDescription
    labelThe label for the dataset which appears in the legend and tooltips.
    orderThe drawing order of dataset. Also affects order for stacking, tooltip, and legend.
    xAxisIDThe ID of the x axis to plot this dataset on.
    yAxisIDThe ID of the y axis to plot this dataset on.

    Point Styling

    The style of each point can be controlled with the following properties:

    All these values, if undefined, fallback first to the dataset options then to the associated elements.point.* options.

    Line Styling

    The style of the line can be controlled with the following properties:

    NameDescription
    backgroundColorThe line fill color.
    borderCapStyleCap style of the line. See .
    borderColorThe line color.
    borderDashLength and spacing of dashes. See MDN.
    borderDashOffsetOffset for line dashes. See .
    borderJoinStyleLine joint style. See MDN.
    borderWidthThe line width (in pixels).
    fillHow to fill the area under the line. See .
    lineTensionBezier curve tension of the line. Set to 0 to draw straightlines. This option is ignored if monotone cubic interpolation is used.
    showLineIf false, the line is not drawn for this dataset.
    spanGapsIf true, lines will be drawn between points with no or null data. If false, points with NaN data will create a break in the line.

    If the value is undefined, showLine and spanGaps fallback to the associated chart configuration options. The rest of the values fallback to the associated options.

    Interactions

    The interaction with each point can be controlled with the following properties:

    The following interpolation modes are supported.

    • 'default'
    • 'monotone'

    The 'default' algorithm uses a custom weighted cubic interpolation, which produces pleasant curves for all types of datasets.

    If left untouched (undefined), the global options.elements.line.cubicInterpolationMode property is used.

    Stepped Line

    The following values are supported for steppedLine.

    • false: No Step Interpolation (default)
    • true: Step-before Interpolation (eq. 'before')
    • 'before': Step-before Interpolation
    • 'after': Step-after Interpolation
    • 'middle': Step-middle Interpolation

    If the steppedLine value is set to anything other than false, lineTension will be ignored.

    The line chart defines the following configuration options. These options are merged with the global chart configuration options, Chart.defaults.global, to form the options passed to the chart.

    NameTypeDefaultDescription
    showLinesbooleantrueIf false, the lines between points are not drawn.
    spanGapsbooleanfalseIf false, NaN data causes a break in the line.

    Default Options

    It is common to want to apply a configuration setting to all created line charts. The global line chart settings are stored in Chart.defaults.line. Changing the global options only affects charts created after the change. Existing charts are not changed.

    For example, to configure all line charts with spanGaps = true you would do:

    1. Chart.defaults.line.spanGaps = true;

    The data property of a dataset for a line chart can be passed in two formats.

    number[]

    When the data array is an array of numbers, the x axis is generally a category. The points are placed onto the axis using their position in the array. When a line chart is created with a category axis, the labels property of the data object must be specified.

    Point[]

    1. data: [{
    2. x: 10,
    3. y: 20
    4. }, {
    5. x: 15,
    6. y: 10
    7. }]

    This alternate is used for sparse datasets, such as those in . Each data point is specified using an object containing x and y properties.

    Stacked Area Chart

    When charting a lot of data, the chart render time may start to get quite large. In that case, the following strategies can be used to improve performance.

    Decimating your data will achieve the best results. When there is a lot of data to display on the graph, it doesn’t make sense to show tens of thousands of data points on a graph that is only a few hundred pixels wide.

    There are many approaches to data decimation and selection of an algorithm will depend on your data and the results you want to achieve. For instance, min/max decimation will preserve peaks in your data but could require up to 4 points for each pixel. This type of decimation would work well for a very noisy signal where you need to see data peaks.

    Disable Bezier Curves

    If you are drawing lines on your chart, disabling bezier curves will improve render times since drawing a straight line is more performant than a bezier curve.

    To disable bezier curves for an entire chart:

    1. new Chart(ctx, {
    2. type: 'line',
    3. data: data,
    4. elements: {
    5. line: {
    6. tension: 0 // disables bezier curves
    7. }
    8. }
    9. }
    10. });

    Disable Line Drawing

    If you have a lot of data points, it can be more performant to disable rendering of the line for a dataset and only draw points. Doing this means that there is less to draw on the canvas which will improve render performance.

    To disable lines:

    Disable Animations

    If your charts have long render times, it is a good idea to disable animations. Doing so will mean that the chart needs to only be rendered once during an update instead of multiple times. This will have the effect of reducing CPU usage and improving general page performance.

    To disable animations

    1. new Chart(ctx, {
    2. type: 'line',
    3. data: data,
    4. options: {
    5. animation: {
    6. duration: 0 // general animation time
    7. },
    8. hover: {
    9. animationDuration: 0 // duration of animations when hovering an item
    10. },
    11. responsiveAnimationDuration: 0 // animation duration after a resize
    12. });