DevExtreme v23.1 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.
Line Charts


Line charts help visualize data and display them as lines with points placed over specified intervals. This demo shows how to initialize and configure Line, Stacked Line, and Full-Stacked Line charts. A Stacked Line chart visualizes multiple data series and allows you to compare the manner in which each series contributes to the total aggregate value for specific arguments. A Full-Stacked Line chart helps compare the percentage value of multiple line series for each argument. Use the drop-down menu under the chart to switch between chart types.

Bind to Data

You can bind line charts to one of the following data sources:

In this demo, the chart is populated with data from a local JavaScript array.

Configure Series

The series type defines the appearance of your chart. To display a Line, Stacked Line, or Full-Stacked Line series, set the type property to one of these types.

You also need to bind the series to data. Set the argumentField and valueField properties to data fields that contain arguments and values for your series. You can specify these properties in an object in the series array or include them in the commonSeriesSettings object. In this demo, the argumentField and type properties are specified for all series in the commonSeriesSettings object.

Enable Tooltips

When you hover the mouse pointer over a series point, it shows a tooltip with information about the series point. To display tooltips, you need to enable the tooltip.enabled property.

Export Chart to Image

To allow a user to print the chart or export it as a PNG, JPEG, or SVG file, set the export.enabled property to true. This setting adds a button that opens a drop-down menu with export and print commands. In this demo, you can find this button in the upper-right corner.

Backend API
Copy to CodePen
const DemoApp = angular.module('DemoApp', ['dx']); DemoApp.controller('DemoController', ($scope) => { $scope.currentType = types[0]; $scope.chartOptions = { palette: 'Violet', dataSource, commonSeriesSettings: { argumentField: 'country', }, bindingOptions: { 'commonSeriesSettings.type': 'currentType', }, margin: { bottom: 20, }, argumentAxis: { valueMarginsEnabled: false, discreteAxisDivisionMode: 'crossLabels', grid: { visible: true, }, }, series: [ { valueField: 'hydro', name: 'Hydro-electric' }, { valueField: 'oil', name: 'Oil' }, { valueField: 'gas', name: 'Natural gas' }, { valueField: 'coal', name: 'Coal' }, { valueField: 'nuclear', name: 'Nuclear' }, ], legend: { verticalAlignment: 'bottom', horizontalAlignment: 'center', itemTextPosition: 'bottom', }, title: { text: 'Energy Consumption in 2004', subtitle: { text: '(Millions of Tons, Oil Equivalent)', }, }, export: { enabled: true, }, tooltip: { enabled: true, }, }; $scope.typesOptions = { dataSource: types, bindingOptions: { value: 'currentType', }, }; });
<!DOCTYPE html> <html xmlns=""> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <script src=""></script> <script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script> <link rel="stylesheet" type="text/css" href="" /> <script src=""></script> <script>window.angular || document.write(decodeURIComponent('%3Cscript src="js/angular.min.js"%3E%3C/script%3E'))</script> <script src=""></script> <script src="data.js"></script> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="index.js"></script> </head> <body class="dx-viewport"> <div class="demo-container" ng-app="DemoApp" ng-controller="DemoController"> <div id="chart-demo"> <div id="chart" dx-chart="chartOptions"></div> <div class="options"> <div class="caption">Options</div> <div class="option"> <span>Series Type</span> <div dx-select-box="typesOptions"></div> </div> </div> </div> </div> </body> </html>
.options { padding: 20px; background-color: rgba(191, 191, 191, 0.15); margin-top: 20px; } .option { margin-top: 10px; } .caption { font-size: 18px; font-weight: 500; } .option > span { margin-right: 10px; } .option > .dx-widget { display: inline-block; vertical-align: middle; }
const dataSource = [{ country: 'USA', hydro: 71.2, oil: 910.4, gas: 483.2, coal: 564.3, nuclear: 216.1, }, { country: 'China', hydro: 72.5, oil: 223.6, gas: 36, coal: 956.9, nuclear: 11.3, }, { country: 'Russia', hydro: 47.7, oil: 149.4, gas: 432.3, coal: 105, nuclear: 29.3, }, { country: 'Japan', hydro: 17.9, oil: 283.6, gas: 61.8, coal: 120.8, nuclear: 52.8, }, { country: 'India', hydro: 14.4, oil: 86.4, gas: 25.1, coal: 204.8, nuclear: 3.8, }, { country: 'Germany', hydro: 6.6, oil: 101.7, gas: 92.7, coal: 85.7, nuclear: 30.8, }]; const types = ['line', 'stackedline', 'fullstackedline'];