Line Chart

A line chart is a way of plotting data points on a line. Often, it is used to show trend data, or the comparison of two data sets.

Line Chart - 图1

config setup

  1. const config = {
  2. type: 'line',
  3. data: data,
  4. };
  1. const labels = Utils.months({count: 7});
  2. const data = {
  3. labels: labels,
  4. datasets: [{
  5. label: 'My First Dataset',
  6. data: [65, 59, 80, 81, 56, 55, 40],
  7. fill: false,
  8. borderColor: 'rgb(75, 192, 192)',
  9. tension: 0.1
  10. }]
  11. };

Dataset Properties

Namespaces:

  • data.datasets[index] - options for this dataset only
  • options.datasets.line - options for all line datasets
  • options.elements.line - options for all line elements
  • options.elements.point - options for all point elements
  • options - options for the whole chart

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.

NameTypeScriptableIndexableDefault
backgroundColorColorYes-‘rgba(0, 0, 0, 0.1)’
borderCapStylestringYes-‘butt’
borderColorColorYes-‘rgba(0, 0, 0, 0.1)’
borderDashnumber[]Yes-[]
borderDashOffsetnumberYes-0.0
borderJoinStylestringYes-‘miter’
borderWidthnumberYes-3
clipnumber|object--undefined
cubicInterpolationModestringYes-‘default’
dataobject|object[]| number[]|string[]--required
fillboolean|stringYes-false
hoverBackgroundColorColorYes-undefined
hoverBorderCapStylestringYes-undefined
hoverBorderColorColorYes-undefined
hoverBorderDashnumber[]Yes-undefined
hoverBorderDashOffsetnumberYes-undefined
hoverBorderJoinStylestringYes-undefined
hoverBorderWidthnumberYes-undefined
indexAxisstring--‘x’
labelstring--‘’
ordernumber--0
pointBackgroundColorColorYesYes‘rgba(0, 0, 0, 0.1)’
pointBorderColorColorYesYes‘rgba(0, 0, 0, 0.1)’
pointBorderWidthnumberYesYes1
pointHitRadiusnumberYesYes1
pointHoverBackgroundColorColorYesYesundefined
pointHoverBorderColorColorYesYesundefined
pointHoverBorderWidthnumberYesYes1
pointHoverRadiusnumberYesYes4
pointRadiusnumberYesYes3
pointRotationnumberYesYes0
pointStylepointStyleYesYes‘circle’
segmentobject--undefined
showLineboolean--true
spanGapsboolean|number--undefined
stackstring--‘line’
steppedboolean|string--false
tensionnumber--0
xAxisIDstring--first x axis
yAxisIDstring--first y axis

All these values, if undefined, fallback to the scopes described in option resolution

General

NameDescription
clipHow to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. 0 = clip at chartArea. Clipping can also be configured per side: clip: {left: 5, top: false, right: -2, bottom: 0}
indexAxisThe base axis of the dataset. ‘x’ for horizontal lines and ‘y’ for vertical lines.
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. more
stackThe ID of the group to which this dataset belongs to (when stacked, each group will be a separate stack). more
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:

NameDescription
pointBackgroundColorThe fill color for points.
pointBorderColorThe border color for points.
pointBorderWidthThe width of the point border in pixels.
pointHitRadiusThe pixel size of the non-displayed point that reacts to mouse events.
pointRadiusThe radius of the point shape. If set to 0, the point is not rendered.
pointRotationThe rotation of the point in degrees.
pointStyleStyle of the point. more…

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 MDNLine Chart - 图2 (opens new window).
borderColorThe line color.
borderDashLength and spacing of dashes. See MDNLine Chart - 图3 (opens new window).
borderDashOffsetOffset for line dashes. See MDNLine Chart - 图4 (opens new window).
borderJoinStyleLine joint style. See MDNLine Chart - 图5 (opens new window).
borderWidthThe line width (in pixels).
fillHow to fill the area under the line. See area charts.
tensionBezier 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 null data will create a break in the line. Can also be a number specifying the maximum gap length to span. The unit of the value depends on the scale used.

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

Interactions

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

NameDescription
pointHoverBackgroundColorPoint background color when hovered.
pointHoverBorderColorPoint border color when hovered.
pointHoverBorderWidthBorder width of point when hovered.
pointHoverRadiusThe radius of the point when hovered.

cubicInterpolationMode

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.

The 'monotone' algorithm is more suited to y = f(x) datasets: it preserves monotonicity (or piecewise monotonicity) of the dataset being interpolated, and ensures local extremums (if any) stay at input data points.

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

Segment

Line segment styles can be overridden by scriptable options in the segment object. Currently all of the border* and backgroundColor options are supported. The segment styles are resolved for each section of the line between each point. undefined fallbacks to main line styles.

TIP

To be able to style gaps, you need the spanGaps option enabled.

Context for the scriptable segment contains the following properties:

  • type: 'segment'
  • p0: first point element
  • p1: second point element
  • p0DataIndex: index of first point in the data array
  • p1DataIndex: index of second point in the data array
  • datasetIndex: dataset index

Example usage

Stepped

The following values are supported for stepped.

  • 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 stepped value is set to anything other than false, tension will be ignored.

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.overrides.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.overrides.line.spanGaps = true;

Data Structure

All of the supported data structures can be used with line charts.

Stacked Area Chart

Line charts can be configured into stacked area charts by changing the settings on the y-axis to enable stacking. Stacked area charts can be used to show how one data trend is made up of a number of smaller pieces.

  1. const stackedLine = new Chart(ctx, {
  2. type: 'line',
  3. data: data,
  4. options: {
  5. scales: {
  6. y: {
  7. stacked: true
  8. }
  9. }
  10. }
  11. });

Vertical Line Chart

A vertical line chart is a variation on the horizontal line chart. To achieve this you will have to set the indexAxis property in the options object to 'y'. The default for this property is 'x' and thus will show horizontal lines.

Line Chart - 图6

config setup

  1. const config = {
  2. type: 'line',
  3. data: data,
  4. options: {
  5. indexAxis: 'y',
  6. scales: {
  7. x: {
  8. beginAtZero: true
  9. }
  10. }
  11. }
  12. };
  1. const labels = Utils.months({count: 7});
  2. const data = {
  3. labels: labels,
  4. datasets: [{
  5. axis: 'y',
  6. label: 'My First Dataset',
  7. data: [65, 59, 80, 81, 56, 55, 40],
  8. fill: false,
  9. backgroundColor: [
  10. 'rgba(255, 99, 132, 0.2)',
  11. 'rgba(255, 159, 64, 0.2)',
  12. 'rgba(255, 205, 86, 0.2)',
  13. 'rgba(75, 192, 192, 0.2)',
  14. 'rgba(54, 162, 235, 0.2)',
  15. 'rgba(153, 102, 255, 0.2)',
  16. 'rgba(201, 203, 207, 0.2)'
  17. ],
  18. borderColor: [
  19. 'rgb(255, 99, 132)',
  20. 'rgb(255, 159, 64)',
  21. 'rgb(255, 205, 86)',
  22. 'rgb(75, 192, 192)',
  23. 'rgb(54, 162, 235)',
  24. 'rgb(153, 102, 255)',
  25. 'rgb(201, 203, 207)'
  26. ],
  27. borderWidth: 1
  28. }]
  29. };

Config Options

The configuration options for the vertical line chart are the same as for the line chart. However, any options specified on the x-axis in a line chart, are applied to the y-axis in a vertical line chart.

Internal data format

{x, y}