DevExtreme v25.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 - Resolve Label Overlap

When a DevExtreme PieChart contains a large number of data points or if data points are compressed visually, point labels may overlap. Use the resolveLabelOverlapping property to minimize the impact of overlapping labels. In this demo, you can hide or shift overlapping labels.

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/25.2.3/css/dx.light.css" /> <script src="js/dx.all.js?v=25.2.3"></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'];