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
import React from 'react'; import TreeMap, { Tooltip } from 'devextreme-react/tree-map'; import SelectBox from 'devextreme-react/select-box'; import { salesAmount, colorizationOptions } from './data.js'; class App extends React.Component { constructor(props) { super(props); this.state = { typeOptions: colorizationOptions[2].options }; this.setType = this.setType.bind(this); } render() { return ( <React.Fragment> <TreeMap id="treemap" dataSource={salesAmount} title="Sales Amount by Product" valueField="salesAmount" colorizer={this.state.typeOptions} > <Tooltip enabled={true} customizeTooltip={customizeTooltip} format="currency" /> </TreeMap> <div className="options"> <div className="caption">Options</div> <div className="option"> <span>Colorization Type </span> <SelectBox dataSource={colorizationOptions} displayExpr="name" valueExpr="options" width={200} value={this.state.typeOptions} onValueChanged={this.setType} /> </div> </div> </React.Fragment> ); } setType(data) { this.setState({ typeOptions: data.value }); } } function customizeTooltip(arg) { const data = arg.node.data; return { text: arg.node.isLeaf() ? `<span class='product'>${data.name}</span><br/>Sales Amount: ${arg.valueText}` : null }; } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.js'; ReactDOM.render( <App />, document.getElementById('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" /> <link rel="stylesheet" type ="text/css" href="styles.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>
.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; }
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/' }, defaultExtension: 'js', map: { 'react': 'npm:react@16/umd/react.development.js', 'react-dom': 'npm:react-dom@16/umd/react-dom.development.js', 'prop-types': 'npm:prop-types/prop-types.js', 'devextreme': 'npm:devextreme@19.2', 'devextreme-react': 'npm:devextreme-react@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', // SystemJS plugins 'plugin-babel': 'npm:systemjs-plugin-babel@0/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0/systemjs-babel-browser.js' }, packages: { 'devextreme': { defaultExtension: 'js' }, 'devextreme-react': { main: 'index.js' } }, babelOptions: { sourceMaps: false, stage0: true, react: true } });