Your search did not match any results.
Pie Charts

Pie with Resolved Label Overlapping

Documentation
In the PieChart, series may include a large number of points, which may result in point label overlapping. This demo illustrates the resolveLabelOverlapping option that allows you to specify how the widget must behave when point labels overlap.
www.nytimes.com
Copy to Plunker
Apply
Reset
<div id="chart-demo"> <dx-pie-chart #pie title="Olympic Medals in 2008" palette="bright" [dataSource]="olympicMedals" [resolveLabelOverlapping]="resolveOverlappingTypes[0]"> <dxo-margin [bottom]="20"></dxo-margin> <dxo-legend [visible]="false"></dxo-legend> <dxo-export [enabled]="true"></dxo-export> <dxi-series argumentField="country" valueField="medals"> <dxo-label [visible]="true" [customizeText]="customizeLabel"> </dxo-label> </dxi-series> </dx-pie-chart> <div class="options"> <div class="caption">Options</div> <div class="option"> <span>Label Overlapping Resolution Mode</span> <dx-select-box [dataSource]="resolveOverlappingTypes" [(value)]="pie.resolveLabelOverlapping"> </dx-select-box> </div> </div> </div>
import { NgModule, Component, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxPieChartModule, DxSelectBoxModule } from 'devextreme-angular'; import { MedalsInfo, Service } from './app.service'; if(!/localhost/.test(document.location.host)) { enableProdMode(); } @Component({ selector: 'demo-app', templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'], providers: [Service] }) export class AppComponent { olympicMedals: MedalsInfo[]; resolveOverlappingTypes = ["shift", "hide", "none"]; constructor(service: Service) { this.olympicMedals = service.getMedalsData(); } customizeLabel(arg) { return arg.argumentText + " ( " + arg.percentText + ")"; } } @NgModule({ imports: [ BrowserModule, DxPieChartModule, DxSelectBoxModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
/deep/ .options { padding: 20px; background-color: #f5f5f5; margin-top: 20px; } /deep/ .option { margin-top: 10px; } /deep/ .caption { font-size: 18px; font-weight: 500; } /deep/ .option > span { margin-right: 10px; } /deep/ .option > .dx-widget { display: inline-block; vertical-align: middle; }
import { Injectable } from '@angular/core'; export class MedalsInfo { country: string; medals: number; } let medals: MedalsInfo[] = [{ country: "USA", medals: 110 }, { country: "China", medals: 100 }, { country: "Russia", medals: 72 }, { country: "Britain", medals: 47 }, { country: "Australia", medals: 46 }, { country: "Germany", medals: 41 }, { country: "France", medals: 40 }, { country: "South Korea", medals: 31 }, { country: "Japan", medals: 25 }, { country: "Italy", medals: 27 }, { country: "Ukraine", medals: 27 }, { country: "Japan ", medals: 25 }, { country: "Cuba ", medals: 24 }]; @Injectable() export class Service { getMedalsData(): MedalsInfo[] { return medals; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular 2 and DevExtreme here: // https://github.com/DevExpress/devextreme-angular/blob/master/README.md System.config({ transpiler: 'ts', typescriptOptions: { module: "commonjs", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" } }, paths: { 'npm:': 'https://unpkg.com/' }, map: { 'ts': 'npm:plugin-typescript@7.0.6/lib/plugin.js', 'typescript': 'npm:typescript@2.2.2/lib/typescript.js', '@angular/core': 'npm:@angular/core@4.1.0/bundles/core.umd.js', '@angular/common': 'npm:@angular/common@4.1.0/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler@4.1.0/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser@4.1.0/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@4.1.0/bundles/platform-browser-dynamic.umd.js', '@angular/http': 'npm:@angular/http@4.1.0/bundles/http.umd.js', '@angular/router': 'npm:@angular/router@4.1.0/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms@4.1.0/bundles/forms.umd.js', 'rxjs': 'npm:rxjs@5.3.1', 'devextreme': 'npm:devextreme@17.1', 'jquery': 'npm:jquery@3.1.1/dist/jquery.min.js', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'devextreme-angular': 'npm:devextreme-angular@17.1' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme-angular': { main: 'index.js', defaultExtension: 'js' } } });
<!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/17.1.5/css/dx.spa.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/17.1.5/css/dx.common.css" /> <link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/17.1.5/css/dx.light.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/zone.js@0.6.25/dist/zone.js"></script> <script src="https://unpkg.com/reflect-metadata@0.1.3/Reflect.js"></script> <script src="https://unpkg.com/systemjs@0.19.31/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>