DevExtreme v23.1 is now available.

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

Your search did not match any results.
Area Charts


This demo shows different Area series types. Use the drop-down editor below the Chart to select the type.

  • area
    The Area series draws the line between neighboring data points and fills the area under that line. If the Chart contains multiple area series, they overlap each other.

  • stackedarea
    The Chart displays areas stacked on top of each other without overlapping. This type of Chart is useful if you need to compare contributions of each series to the overall value.

  • fullstackedarea
    The Chart stacks the areas. For each argument, it displays values as percentages of the total, as opposed to absolute values. The topmost series points are always plotted at 100%, and the graph fully covers the Chart's pane.

To create multiple area series, use the series array to declare each series and the commonSeriesSettings object to specify the common series type.
Backend API
Copy to CodeSandBox
<template> <div id="chart-demo"> <DxChart :data-source="dataSource" palette="Harmony Light" title="Population: Age Structure (2018)" > <DxCommonSeriesSettings :type="type" argument-field="country" /> <DxSeries value-field="y1564" name="15-64 years" /> <DxSeries value-field="y014" name="0-14 years" /> <DxSeries value-field="y65" name="65 years and older" /> <DxMargin :bottom="20"/> <DxArgumentAxis :value-margins-enabled="false"/> <DxLegend vertical-alignment="bottom" horizontal-alignment="center" /> <DxExport :enabled="true"/> </DxChart> <div class="options"> <div class="caption">Options</div> <div class="option"> <span>Series Type </span> <DxSelectBox :data-source="types" :input-attr="{ 'aria-label': 'Series Type' }" v-model:value="type" /> </div> </div> </div> </template> <script> import { DxChart, DxSeries, DxArgumentAxis, DxCommonSeriesSettings, DxExport, DxLegend, DxMargin, } from 'devextreme-vue/chart'; import DxSelectBox from 'devextreme-vue/select-box'; import { dataSource } from './data.js'; export default { components: { DxSelectBox, DxChart, DxSeries, DxArgumentAxis, DxCommonSeriesSettings, DxExport, DxLegend, DxMargin, }, data() { const types = ['area', 'stackedarea', 'fullstackedarea']; return { dataSource, types, type: types[0], }; }, }; </script> <style> .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; } </style>
import { createApp } from 'vue'; import App from './App.vue'; createApp(App).mount('#app');
<!DOCTYPE html> <html> <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" /> <link rel="stylesheet" type="text/css" href="" /> <script src=""></script> <script src=""></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import("./index.js"); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"> </div> </div> </body> </html>
export const dataSource = [{ country: 'China', y014: 233866959, y1564: 1170914102, y65: 171774113, }, { country: 'India', y014: 373419115, y1564: 882520945, y65: 76063757, }, { country: 'United States', y014: 60554755, y1564: 213172625, y65: 54835293, }, { country: 'Indonesia', y014: 65715705, y1564: 177014815, y65: 18053690, }, { country: 'Brazil', y014: 45278034, y1564: 144391494, y65: 17190842, }, { country: 'Russia', y014: 24465156, y1564: 96123777, y65: 20412243, }];
window.config = { transpiler: 'plugin-babel', meta: { '*.vue': { loader: 'vue-loader', }, '*.ts': { loader: 'demo-ts-loader', }, '*.svg': { loader: 'svg-loader', }, 'devextreme/localization.js': { 'esModule': true, }, }, paths: { 'root:': '../../../../../', 'npm:': '', }, map: { 'vue': 'npm:vue@3.3.4/dist/vue.esm-browser.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@1.1.1/index.js', 'demo-ts-loader': 'root:utils/demo-ts-loader.js', 'svg-loader': 'root:utils/svg-loader.js', 'mitt': 'npm:mitt/dist/mitt.umd.js', 'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.28.1/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@23.1.5/cjs', 'devextreme-vue': 'npm:devextreme-vue@23.1.5', 'jszip': 'npm:jszip@3.7.1/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@1.6.2/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.2.1/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@4.1.48/dist/dx-gantt.js', '@devextreme/runtime': 'npm:@devextreme/runtime@3.0.11', 'inferno': 'npm:inferno@7.4.11/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@7.4.11/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate@7.4.11/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js', 'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js', // Prettier 'prettier/standalone': 'npm:prettier@2.8.4/standalone.js', 'prettier/parser-html': 'npm:prettier@2.8.4/parser-html.js', }, packages: { 'devextreme-vue': { main: 'index.js', }, 'devextreme': { defaultExtension: 'js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:@devextreme/runtime@3.0.11/inferno/package.json', ], babelOptions: { sourceMaps: false, stage0: true, }, }; System.config(window.config);