Your search did not match any results.
Pie Charts

Pies with Equal Sizes

Documentation

When several PieChart widgets are displayed side by side, their pies may differ in size. To eliminate these differences, you can collect all PieCharts in a single size group by setting their sizeGroup option to identical values.

Copy to CodeSandBox
Apply
Reset
<div class="pies-container"> <dx-pie-chart class="pie" title="Area of Countries" sizeGroup="piesGroup" palette="Soft" [dataSource]="countries"> <dxi-series argumentField="name" valueField="area"> <dxo-label [visible]="true" format="percent"></dxo-label> </dxi-series> <dxo-legend verticalAlignment="bottom" horizontalAlignment="center" itemTextPosition="right"> </dxo-legend> </dx-pie-chart> <dx-pie-chart class="pie" title="Water/Land Ratio" palette="Soft Pastel" sizeGroup="piesGroup" [dataSource]="waterLandRatio"> <dxi-series argumentField="name" valueField="area"> <dxo-label [visible]="true" format="percent"></dxo-label> </dxi-series> <dxo-legend verticalAlignment="bottom" horizontalAlignment="center" itemTextPosition="right" [rowCount]="2"> </dxo-legend> </dx-pie-chart> </div>
import { NgModule, Component, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxPieChartModule } from 'devextreme-angular'; import { Area, 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 { countries: Area[]; waterLandRatio: Area[]; constructor(service: Service) { this.countries = service.getAreas(); this.waterLandRatio = service.getLandWaterAreas(); } } @NgModule({ imports: [ BrowserModule, DxPieChartModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
::ng-deep .pies-container { margin: auto; width: 800px; } ::ng-deep .pies-container > .pie { width: 400px; float: left; }
import { Injectable } from '@angular/core'; export class Area { name: string; area: number; } let countries: Area[] = [{ name: "Russia", area: 0.12 }, { name: "Canada", area: 0.07 }, { name: "USA", area: 0.07 }, { name: "China", area: 0.07 }, { name: "Brazil", area: 0.06 }, { name: "Australia", area: 0.05 }, { name: "India", area: 0.02 }, { name: "Others", area: 0.55 }]; let waterLandRatio: Area[] = [{ name: 'Land', area: 0.29 }, { name: 'Water', area: 0.71 }]; @Injectable() export class Service { getAreas(): Area[] { return countries; } getLandWaterAreas(): Area[] { return waterLandRatio; } }
// 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://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@7.1.3/bundles/core.umd.js', '@angular/common': 'npm:@angular/common@7.1.3/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler@7.1.3/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser@7.1.3/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@7.1.3/bundles/platform-browser-dynamic.umd.js', '@angular/router': 'npm:@angular/router@7.1.3/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms@7.1.3/bundles/forms.umd.js', '@angular/common/http': 'npm:@angular/common@7.1.3/bundles/common-http.umd.js', 'tslib': 'npm:tslib/tslib.js', 'rxjs': 'npm:rxjs@6.3.3', 'rxjs/operators': 'npm:rxjs@6.3.3/operators', 'devextreme': 'npm:devextreme@18.2', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'quill': 'npm:quill@1.3.6/dist/quill.js', 'devextreme-angular': 'npm:devextreme-angular@18.2' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'rxjs': { main: 'index.js', defaultExtension: 'js' }, 'rxjs/operators': { main: 'index.js', 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/18.2.7/css/dx.common.css" /> <link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/18.2.7/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.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>