Your search did not match any results.
Charts

Tiling Algorithms

Documentation
The TreeMap widget supports three layout algorithms out of the box and provides the capability to implement your own algorithm. In this demo, you can change the applied algorithm at runtime using the drop-down menu above the widget.
Copy to Codepen
Apply
Reset
$(function(){ var algorithms = ["sliceAndDice", "squarified", "strip", "custom"], currentAlgorithm = algorithms[2]; var treeMap = $("#treemap").dxTreeMap({ dataSource: populationByAge, layoutAlgorithm: currentAlgorithm, colorizer: { type: "discrete", colorizeGroups: true }, title: "Population by Age Groups", tooltip: { enabled: true, format: "thousands", customizeTooltip: function (arg) { var data = arg.node.data, parentData = arg.node.getParent().data, result = ""; if (arg.node.isLeaf()) { result = "<b>" + parentData.name + "</b><br />" + data.name + "<br />" + arg.valueText + " (" + (100 * data.value/parentData.total).toFixed(1) + "%)"; } else { result = "<b>" + data.name + "</b>"; } return { text: result }; } }, size: { height: 460 } }).dxTreeMap("instance"); $("#algorithm").dxSelectBox({ items: algorithms, width: 200, value: currentAlgorithm, onValueChanged: function(data) { if(data.value == "custom") { currentAlgorithm = customAlgorithm; } else { currentAlgorithm = data.value; } treeMap.option("layoutAlgorithm", currentAlgorithm); } }); function customAlgorithm(arg) { var side = 0, totalRect = arg.rect.slice(), totalSum = arg.sum; arg.items.forEach(function (item) { var size = Math.round((totalRect[side + 2] - totalRect[side]) * item.value / totalSum), pos, rect = totalRect.slice(); totalSum -= item.value; rect[side + 2] = totalRect[side] = totalRect[side] + size; item.rect = rect; side = 1 - side; }); } });
<!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="js/jquery-3.1.0.min.js"></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/16.2.5/css/dx.spa.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/16.2.5/css/dx.common.css" /> <link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/16.2.5/css/dx.light.css" /> <script src="https://cdn3.devexpress.com/jslib/16.2.5/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="algorithm-option"> Tiling Algorithm: <div id="algorithm" class="selectbox"></div> </div> <div id="treemap"></div> </div> </body> </html>
.algorithm-option { line-height: 36px; margin-bottom: 10px; } .algorithm-option > .selectbox { display: inline-block; vertical-align: top; margin-left: 10px; line-height: normal; }
var populationByAge = [{ "name": "Brazil", "total": 200050486, "items": [{ "name": "Age 0-14", "value": 48058462 }, { "name": "Age 15-44", "value": 96036995 }, { "name": "Age 45-64", "value": 40715296 }, { "name": "Age 65+", "value": 15239733 }] }, { "name": "Japan", "total": 126345237, "items": [{ "name": "Age 0-14", "value": 16593766 }, { "name": "Age 15-44", "value": 45455276 }, { "name": "Age 45-64", "value": 32845790 }, { "name": "Age 65+", "value": 31450405 }] }, { "name": "United States", "total": 318497627, "items": [{ "name": "Age 0-14", "value": 63968935 }, { "name": "Age 15-44", "value": 127217843 }, { "name": "Age 45-64", "value": 83145484 }, { "name": "Age 65+", "value": 44165365 }] }];