Your search did not match any results.
Funnel and Pyramid Charts

Pyramid Chart


The DevExtreme HTML5 JavaScript Pyramid Chart is often used to visualize an organizational structure. In this demo, the pyramid displays a team’s composition, reflecting both subordination and strength. In code, the pyramid is created using the Funnel widget with the algorithm option set to «dynamicHeight» and inverted option set to true.

Copy to CodeSandBox
<template> <DxFunnel id="pyramid" :data-source="dataSource" :sort-data="false" :inverted="true" algorithm="dynamicHeight" palette="Harmony Light" argument-field="level" value-field="count" > <DxTitle text="Team Composition"> <DxMargin :bottom="30"/> </DxTitle> <DxTooltip :enabled="true"/> <DxItem> <DxBorder :visible="true"/> </DxItem> <DxLegend :visible="true"/> <DxLabel :visible="true" horizontal-alignment="left" background-color="none" > <DxFont :size="16"/> </DxLabel> </DxFunnel> </template> <script> import DxFunnel, { DxTitle, DxMargin, DxTooltip, DxItem, DxBorder, DxLegend, DxLabel, DxFont } from 'devextreme-vue/funnel'; import { dataSource } from './data.js'; export default { components: { DxFunnel, DxTitle, DxMargin, DxTooltip, DxItem, DxBorder, DxLegend, DxLabel, DxFont }, data() { return { dataSource }; } }; </script> <style> #pyramid { height: 440px; } </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="" /> <link rel="stylesheet" type="text/css" href="" /> <script src=""></script> <script src=""></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 dataSource = [ { count: 75, level: 'Junior Engineer' }, { count: 95, level: 'Mid-Level Engineer' }, { count: 53, level: 'Senior Engineer' }, { count: 23, level: 'Lead Engineer' }, { count: 18, level: 'Architect' } ];
System.config({ transpiler: 'plugin-babel', meta: { '*.vue': { loader: 'vue-loader' }, }, paths: { 'npm:': '' }, 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@20.1', 'devextreme-vue': 'npm:devextreme-vue@20.1', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'quill': 'npm:quill@1.3.7/dist/quill.js', 'devexpress-diagram': 'npm:devexpress-diagram@1.0.17', 'devexpress-gantt': 'npm:devexpress-gantt@1.0.10', 'plugin-babel': 'npm:systemjs-plugin-babel@0/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0/systemjs-babel-browser.js' }, packages: { 'devextreme-vue': { main: 'index.js' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme/events/utils': { main: 'index' }, 'devextreme/events': { main: 'index' }, }, babelOptions: { sourceMaps: false, stage0: true } });