DevExtreme v24.2 is now available.

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

Your search did not match any results.

JavaScript/jQuery Charts - Pie with Resolved Label Overlapping

In the PieChart, series may include a large number of points, which may result in point label overlapping. This demo illustrates the resolveLabelOverlapping property that allows you to specify how the component must behave when point labels overlap.

www.wikipedia.org
Backend API
$(() => { const pieChart = $('#pie').dxPieChart({ palette: 'bright', dataSource, title: 'Olympic Medals in 2008', margin: { bottom: 20, }, legend: { visible: false, }, animation: { enabled: false, }, resolveLabelOverlapping: types[0], export: { enabled: true, }, series: [{ argumentField: 'country', valueField: 'medals', label: { visible: true, customizeText(arg) { return `${arg.argumentText} (${arg.percentText})`; }, }, }], }).dxPieChart('instance'); $('#types').dxSelectBox({ dataSource: types, inputAttr: { 'aria-label': 'Series Type' }, value: types[0], onValueChanged(e) { pieChart.option('resolveLabelOverlapping', e.value); }, }); });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <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=5.0" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></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="https://cdn3.devexpress.com/jslib/24.2.3/css/dx.light.css" /> <script src="js/dx.all.js"></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"> <div id="chart-demo"> <div id="pie"></div> <div class="options"> <div class="caption">Options</div> <div class="option"> <span>Label Overlapping Resolution Mode</span> <div id="types"></div> </div> </div> </div> </div> </body> </html>
.options { padding: 20px; background-color: rgba(191, 191, 191, 0.15); margin-top: 20px; } .option { margin-top: 10px; display: flex; align-items: center; } .caption { font-size: 18px; font-weight: 500; } .option > span { margin-right: 10px; } .option > .dx-widget { display: inline-block; vertical-align: middle; }
const dataSource = [{ country: 'USA', medals: 112, }, { country: 'China', medals: 100, }, { country: 'Russia', medals: 60, }, { country: 'Britain', medals: 49, }, { country: 'Australia', medals: 46, }, { country: 'France', medals: 43, }, { country: 'Germany', medals: 41, }, { country: 'South Korea', medals: 32, }, { country: 'Cuba', medals: 29, }, { country: 'Italy', medals: 27, }, { country: 'Japan', medals: 25, }, { country: 'Ukraine', medals: 22, }, { country: 'Canada', medals: 20, }, { country: 'Spain', medals: 19, }]; const types = ['shift', 'hide', 'none'];