DevExtreme v23.2 is now available.

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

Your search did not match any results.

Step Area with Gaps

The Step Area series uses perpendicular vertical and horizontal lines to connect data points and shades the area under these lines. If a point's value is null, the series draws a gap.

Only null point values result in gaps. undefined values are ignored. Multiple 0 values may look like a gap, but if series points are visible, you can see them in this gap. If you want to remove gaps caused by null values, enable the ignoreEmptyPoints property.

www.wikipedia.org
Backend API
<dx-chart id="chart" [dataSource]="medalsInfo" title="France Olympic Medals"> <dxi-series valueField="gold" name="Gold Medals" color="#ffd700"></dxi-series> <dxi-series valueField="silver" name="Silver Medals" color="#c0c0c0" ></dxi-series> <dxo-common-series-settings argumentField="year" type="steparea"> <dxo-steparea> <dxo-point [visible]="true"></dxo-point> </dxo-steparea> </dxo-common-series-settings> <dxo-argument-axis> <dxo-label> <dxo-format type="decimal"></dxo-format> </dxo-label> </dxo-argument-axis> <dxo-legend verticalAlignment="bottom" horizontalAlignment="center"> </dxo-legend> <dxo-export [enabled]="true"></dxo-export> </dx-chart>
import { NgModule, Component, enableProdMode } from '@angular/core'; import { BrowserModule, BrowserTransferStateModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxChartModule } from 'devextreme-angular'; import { Service, MedalsInfo } from './app.service'; if (!/localhost/.test(document.location.host)) { enableProdMode(); } @Component({ selector: 'demo-app', providers: [Service], templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'], }) export class AppComponent { medalsInfo: MedalsInfo[]; constructor(service: Service) { this.medalsInfo = service.getMedalsInfo(); } } @NgModule({ imports: [ BrowserModule, BrowserTransferStateModule, DxChartModule, ], declarations: [AppComponent], bootstrap: [AppComponent], }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
::ng-deep #chart { height: 440px; width: 100%; }
import { Injectable } from '@angular/core'; export class MedalsInfo { year: number; gold: number; silver: number; } const medalsInfo: MedalsInfo[] = [{ year: 1904, gold: null, silver: null, }, { year: 1908, gold: 5, silver: 5, }, { year: 1912, gold: 7, silver: 4, }, { year: 1916, gold: null, silver: null, }, { year: 1920, gold: 9, silver: 19, }, { year: 1924, gold: 13, silver: 15, }, { year: 1928, gold: 6, silver: 10, }, { year: 1932, gold: 10, silver: 5, }, { year: 1936, gold: 7, silver: 6, }, { year: 1940, gold: null, silver: null, }, { year: 1944, gold: null, silver: null, }, { year: 1948, gold: 10, silver: 6, }, { year: 1952, gold: 6, silver: 6, }, { year: 1956, gold: 4, silver: 4, }, { year: 1960, gold: null, silver: 2, }, { year: 1964, gold: 1, silver: 8, }, { year: 1968, gold: 7, silver: 3, }, { year: 1972, gold: 2, silver: 4, }, { year: 1976, gold: 2, silver: 3, }, { year: 1980, gold: 6, silver: 5, }, { year: 1984, gold: 5, silver: 7, }, { year: 1988, gold: 6, silver: 4, }, { year: 1992, gold: 8, silver: 5, }, { year: 1996, gold: 15, silver: 7, }, { year: 2000, gold: 13, silver: 14, }, { year: 2004, gold: 11, silver: 9, }, { year: 2008, gold: 7, silver: 16, }, { year: 2012, gold: 11, silver: 11, }, { year: 2016, gold: 18, silver: 18, }]; @Injectable() export class Service { getMedalsInfo(): MedalsInfo[] { return medalsInfo; } }
// In real applications, you should not transpile code in the browser. // You can see how to create your own application with Angular and DevExtreme here: // https://js.devexpress.com/Documentation/Guide/Angular_Components/Getting_Started/Create_a_DevExtreme_Application/ window.exports = window.exports || {}; window.config = { transpiler: 'ts', typescriptOptions: { module: 'system', emitDecoratorMetadata: true, experimentalDecorators: true, }, meta: { 'typescript': { 'exports': 'ts', }, 'devextreme/time_zone_utils.js': { 'esModule': true, }, 'devextreme/localization.js': { 'esModule': true, }, 'devextreme/viz/palette.js': { 'esModule': true, }, }, paths: { 'npm:': 'https://unpkg.com/', }, map: { 'ts': 'npm:plugin-typescript@4.2.4/lib/plugin.js', 'typescript': 'npm:typescript@4.2.4/lib/typescript.js', '@angular/core': 'npm:@angular/core@12.2.17', '@angular/platform-browser': 'npm:@angular/platform-browser@12.2.17', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@12.2.17', '@angular/forms': 'npm:@angular/forms@12.2.17', '@angular/common': 'npm:@angular/common@12.2.17', '@angular/compiler': 'npm:@angular/compiler@12.2.17', 'tslib': 'npm:tslib@2.6.2/tslib.js', 'rxjs': 'npm:rxjs@7.5.3/dist/bundles/rxjs.umd.js', 'rxjs/operators': 'npm:rxjs@7.5.3/dist/cjs/operators/index.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.2.5/cjs', 'devextreme/bundles/dx.all': 'npm:devextreme@23.2.5/bundles/dx.all.js', 'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@1.6.4/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.2.5', 'devexpress-gantt': 'npm:devexpress-gantt@4.1.51', 'devextreme-angular': 'npm:devextreme-angular@23.2.5', '@devextreme/runtime': 'npm:@devextreme/runtime@3.0.12', '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', // Prettier 'prettier/standalone': 'npm:prettier@2.8.4/standalone.js', 'prettier/parser-html': 'npm:prettier@2.8.4/parser-html.js', }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts', }, 'devextreme': { defaultExtension: 'js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, 'rxjs': { defaultExtension: 'js', }, 'rxjs/operators': { defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:@devextreme/runtime@3.0.12/inferno/package.json', 'npm:@angular/*/package.json', 'npm:@angular/common@12.2.17/*/package.json', 'npm:rxjs@7.5.3/package.json', 'npm:rxjs@7.5.3/operators/package.json', 'npm:devextreme-angular@23.2.5/*/package.json', 'npm:devextreme-angular@23.2.5/ui/*/package.json', 'npm:devextreme-angular@23.2.5/package.json', 'npm:devexpress-diagram@2.2.5/package.json', 'npm:devexpress-gantt@4.1.51/package.json', ], }; System.config(window.config);
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <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="https://cdn3.devexpress.com/jslib/23.2.5/css/dx.light.css" /> <script src="https://unpkg.com/core-js@2.6.12/client/shim.min.js"></script> <script src="https://unpkg.com/zone.js@0.12.0/dist/zone.js"></script> <script src="https://unpkg.com/reflect-metadata@0.1.13/Reflect.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script src="config.js"></script> <script> System.import("app").catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>