Your search did not match any results.
Doughnut Charts

Custom Label in the Center

To customize the doughnut's center, declare the SVG markup in the centerTemplate. This template accepts the PieChart instance. Use this instance to call widget methods. For example, call the getInnerRaduis() method to get the radius of the doughnut hole.

UNdata
Copy to CodePen
Apply
Reset
$(function () { var commonSettings = { innerRadius: 0.65, resolveLabelOverlapping: "shift", sizeGroup: "piesGroup", legend: { visible: false }, type: "doughnut", series: [{ argumentField: "commodity", valueField: "total", label: { visible: true, connector: { visible: true }, format: "fixedPoint", backgroundColor: "none", customizeText: function(e) { return e.argumentText + "\n" + e.valueText; } } }], centerTemplate: function(pieChart, container) { var total = pieChart.getAllSeries()[0].getVisiblePoints().reduce((s, p) => s + p.originalValue, 0), country = pieChart.getAllSeries()[0].getVisiblePoints()[0].data.country, content = $('<svg><circle cx="100" cy="100" fill="#eee" r="' + (pieChart.getInnerRadius() - 6) + '"></circle>' + '<image x="70" y="58" href="' + "../../../../images/flags/" + country.replace(/\s/, "").toLowerCase() + ".svg" + '"/>' + '<text text-anchor="middle" style="font-size: 18px" x="100" y="120" fill="#494949">' + '<tspan x="100" >' + country + '</tspan>' + '<tspan x="100" dy="20px" style="font-weight: 600">' + Globalize.formatNumber(total, { maximumFractionDigits: 0 }) + '</tspan></text></svg>'); container.appendChild(content.get(0)); } }; $("#countries") .dxPieChart($.extend({}, commonSettings, { dataSource: { store: data, filter: ["country", "=", "France"] } })); $("#waterLandRatio") .dxPieChart($.extend({}, commonSettings, { dataSource: { store: data, filter: ["country", "=", "Germany"] } })); });
<!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" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script> <script src="https://cdnjs.cloudflare.com/ajax/libs/cldrjs/0.4.4/cldr.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/cldrjs/0.4.4/cldr/event.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/cldrjs/0.4.4/cldr/supplemental.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/cldrjs/0.4.4/cldr/unresolved.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/globalize/1.1.1/globalize.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/globalize/1.1.1/globalize/message.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/globalize/1.1.1/globalize/number.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/globalize/1.1.1/globalize/currency.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/globalize/1.1.1/globalize/date.min.js"></script> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.2.3/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.2.3/css/dx.light.css" /> <script src="https://cdn3.devexpress.com/jslib/19.2.3/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 class="long-title"><h3>Energy Production (GWh, 2016)</h3></div> <div class="pies-container"> <div id="countries"></div> <div id="waterLandRatio"></div> </div> </div> </body> </html>
.pies-container { margin: auto; width: 800px; } .pies-container > div { width: 400px; float: left; margin-top: -50px; } .long-title h3 { font-weight: 200; font-size: 28px; text-align: center; margin-bottom: 20px; }
var data = [ { country: "France", commodity: "Nuclear", total: 403195 }, { country: "Germany", commodity: "Nuclear", total: 84634 }, { country: "India", commodity: "Nuclear", total: 37916 }, { country: "France", commodity: "Thermal", total: 57471 }, { country: "Germany", commodity: "Thermal", total: 419591 }, { country: "India", commodity: "Thermal", total: 1188280 }, { country: "France", commodity: "Wind", total: 21400 }, { country: "Germany", commodity: "Wind", total: 78598 }, { country: "India", commodity: "Wind", total: 35530 }, { country: "France", commodity: "Solar", total: 8160 }, { country: "Germany", commodity: "Solar", total: 38098 }, { country: "India", commodity: "Solar", total: 12578 }, { country: "France", commodity: "Tidal, Wave", total: 501 } ];