DevExtreme v23.1 is now available.

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

Your search did not match any results.
Pie Charts

Pies with Equal Sizes

To display multiple PieChart components that share series and legend settings, you can declare an object with options and use this object in every PieChart.

When you display PieChart components side by side, their pies may differ in size. You can join all charts into a size group to resize these pies to match each other. To do so, set the sizeGroup property of every chart to the same value.

Backend API
Copy to CodePen
const DemoApp = angular.module('DemoApp', ['dx']); DemoApp.controller('DemoController', ($scope) => { const legendSettings = { verticalAlignment: 'bottom', horizontalAlignment: 'center', itemTextPosition: 'right', rowCount: 2, }; const seriesOptions = [{ argumentField: 'name', valueField: 'area', label: { visible: true, format: 'percent', }, }]; const sizeGroupName = 'piesGroup'; $scope.countriesAreaChartOptions = { dataSource: countries, sizeGroup: sizeGroupName, title: 'Area of Countries', palette: 'Soft', legend: legendSettings, series: seriesOptions, }; $scope.landWaterRationChartOptions = { sizeGroup: sizeGroupName, title: 'Water/Land Ratio', legend: legendSettings, palette: 'Soft Pastel', dataSource: waterLandRatio, series: seriesOptions, }; });
<!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 class="pies-container"> <div id="countries" dx-pie-chart="countriesAreaChartOptions"></div> <div id="waterLandRatio" dx-pie-chart="landWaterRationChartOptions"></div> </div> </div> </body> </html>
.pies-container { margin: auto; width: 800px; } .pies-container > div { width: 400px; float: left; }
const waterLandRatio = [{ name: 'Land', area: 0.29, }, { name: 'Water', area: 0.71, }]; const countries = [{ 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, }];