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

Pie with Custom Labels

This demo illustrates how to customize the PieChart component labels.

The series.label object allows you to specify the following settings:

  • visible
    Specifies the visibility of point labels.

  • position
    Specifies a label position relative to the PieChart.

    • outside
      The labels are outside the component.

    • columns
      The labels are outside the component and are arranged in columns. In this demo, you can see this mode in action.

    • inside
      The labels are inside the points.

  • customizeText
    A function that returns text displayed by point labels.

  • font
    Specifies font properties for label text. This demo uses the nested size property to change the font size.

  • connector
    Specifies connector properties for labels. In this demo, the nested visible property is enabled, and the connector width is set to 0.5.

You can also format label text and change word wrap mode, specify the background color and borders, and rotate and shift the labels.
Backend API
Copy to CodePen
const DemoApp = angular.module('DemoApp', ['dx']); DemoApp.controller('DemoController', ($scope) => { $scope.chartOptions = { palette: 'bright', dataSource, title: 'Olympic Medals in 2008', legend: { orientation: 'horizontal', itemTextPosition: 'right', horizontalAlignment: 'center', verticalAlignment: 'bottom', columnCount: 4, }, export: { enabled: true, }, series: [{ argumentField: 'country', valueField: 'medals', label: { visible: true, font: { size: 16, }, connector: { visible: true, width: 0.5, }, position: 'columns', customizeText(arg) { return `${arg.valueText} (${arg.percentText})`; }, }, }], }; });
<!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 id="pie" dx-pie-chart="chartOptions"></div> </div> </body> </html>
#pie { height: 440px; }
const dataSource = [{ 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, }];