Your search did not match any results.
Tree Map

Colorization

Documentation

The TreeMap widget provides a flexible system of tile colorization. You can assign colors to tiles depending on their values or the group they belong to. If colors are specified in your data source, you can use them as well. Finally, the widget includes nine built-in palettes that ensure the superb appearance.

Copy to CodeSandBox
Apply
Reset
<template> <div> <dx-tree-map id="treemap" :data-source="salesAmount" :colorizer="typeOptions" value-field="salesAmount" title="Sales Amount by Product" > <dx-tooltip :enabled="true" :customize-tooltip="customizeTooltip" format="currency" /> </dx-tree-map> <div class="options"> <div class="caption">Options</div> <div class="option"> <span>Colorization Type</span> <dx-select-box :data-source="colorizationOptions" :width="200" v-model="typeOptions" display-expr="name" value-expr="options" /> </div> </div> </div> </template> <script> import DxTreeMap, { DxTooltip } from 'devextreme-vue/tree-map'; import { DxSelectBox } from 'devextreme-vue/select-box'; import { salesAmount, colorizationOptions } from './data.js'; export default { components: { DxTreeMap, DxTooltip, DxSelectBox }, data() { return { salesAmount, colorizationOptions, typeOptions: colorizationOptions[2].options }; }, methods: { customizeTooltip(arg) { const data = arg.node.data; return { text: arg.node.isLeaf() ? `<span class='product'>${data.name}</span><br/>Sales Amount: ${arg.valueText}` : null }; } } }; </script> <style scoped> .product { font-weight: 500; } .options { padding: 20px; background-color: rgba(191, 191, 191, 0.15); margin-top: 20px; } .option { margin-top: 10px; } .caption { font-size: 18px; font-weight: 500; } .option > span { margin-right: 10px; } .option > .dx-widget { display: inline-block; vertical-align: middle; } </style>
import Vue from 'vue'; import App from './App.vue'; new Vue({ el: '#app', components: { App }, template: '<App/>' });
<!DOCTYPE html> <html> <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" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.2.4/css/dx.common.css" /> <link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/19.2.4/css/dx.light.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import('./index.js'); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"> </div> </div> </body> </html>
export const colorizationOptions = [{ name: 'Discrete', options: { type: 'discrete', palette: 'Harmony Light', colorizeGroups: false } }, { name: 'Grouped', options: { type: 'discrete', palette: 'Harmony Light', colorizeGroups: true } }, { name: 'Range', options: { type: 'range', palette: ['#fbd600', '#78299a'], range: [0, 50000, 100000, 150000, 200000, 250000], colorCodeField: 'salesAmount', colorizeGroups: false } }, { name: 'Gradient', options: { type: 'gradient', palette: ['#fbd600', '#78299a'], range: [10000, 250000], colorCodeField: 'salesAmount', colorizeGroups: false } }]; export const salesAmount = [{ name: 'Monitors', items: [{ name: 'DesktopLCD 19', salesAmount : 23420 }, { name: 'DesktopLCD 21', salesAmount : 113900 }, { name: 'DesktopLED 19', salesAmount : 49170 }, { name: 'DesktopLED 21', salesAmount : 81200 }] }, { name: 'Projectors', items: [{ name: 'Projector Plus', salesAmount: 99000 }, { name: 'Projector PlusHD', salesAmount: 152250 }] }, { name: 'Televisions', items: [{ name: 'SuperLCD 55', salesAmount: 147150 }, { name: 'SuperLCD 42', salesAmount: 103200 }, { name: 'SuperLCD 70', salesAmount: 56000 }, { name: 'SuperLED 42', salesAmount: 159500 }, { name: 'SuperLED 50', salesAmount: 233600 }, { name: 'SuperPlasma 50', salesAmount: 184800 }, { name: 'SuperPlasma 65', salesAmount: 178500 }] }, { name: 'Video Players', items: [{ name: 'HD Video Player', salesAmount: 63690 }, { name: 'SuperHD Video Player', salesAmount: 74000 }] }];
System.config({ transpiler: 'plugin-babel', paths: { 'npm:': 'https://unpkg.com/' }, map: { vue: 'npm:vue@2.6.3/dist/vue.esm.browser.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@latest/index.js', 'devextreme': 'npm:devextreme@19.2', 'devextreme-vue': 'npm:devextreme-vue@19.2', jszip: 'npm:jszip@3.1.3/dist/jszip.min.js', 'quill': 'npm:quill@1.3.7/dist/quill.js', 'devexpress-diagram': 'npm:devexpress-diagram', 'devexpress-gantt': 'npm:devexpress-gantt', 'plugin-babel': 'npm:systemjs-plugin-babel@0/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0/systemjs-babel-browser.js' }, meta: { '*.vue': { loader: 'vue-loader' } }, packages: { 'devextreme-vue': { main: 'index.js' }, 'devextreme': { defaultExtension: 'js' } }, babelOptions: { sourceMaps: false, stage0: true } });