Your search did not match any results.
Charts

Tiling algorithms

API Reference
The DevExtreme HTML5 Tree Map 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 using the select box above the widget at runtime.
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.4/css/dx.spa.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/16.2.4/css/dx.common.css" /> <link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/16.2.4/css/dx.light.css" /> <script src="https://cdn3.devexpress.com/jslib/16.2.4/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 }] }];