Your search did not match any results.
Pie Charts

Pies with Equal Sizes

To display multiple PieChart components that share series and legend settings, you can use a v-for notation to iterate through every PieChart option.

When you display PieChart components side by side, their pies may differ in size. You can join all charts into a size group to resize these pies to match each other. To do so, set the sizeGroup property of every chart to the same value.

Backend API
Copy to CodeSandBox
Apply
Reset
<template> <div class="pies-container"> <DxPieChart v-for="(options, index) in pieCharts" :key="index" :data-source="options.dataSource" :title="options.title" :palette="options.palette" class="pie" size-group="piesGroup" > <DxSeries argument-field="name" value-field="area" > <DxLabel :visible="true" format="percent" /> </DxSeries> <DxLegend :row-count="2" vertical-alignment="bottom" horizontal-alignment="center" item-text-position="right" /> </DxPieChart> </div> </template> <script> import DxPieChart, { DxSeries, DxLabel, DxLegend, } from 'devextreme-vue/pie-chart'; import { countries, waterLandRatio } from './data.js'; export default { components: { DxPieChart, DxSeries, DxLabel, DxLegend, }, data() { return { pieCharts: [{ title: 'Area of Countries', palette: 'Soft', dataSource: countries, }, { title: 'Water/Land Ratio', palette: 'Soft Pastel', dataSource: waterLandRatio, }], }; }, }; </script> <style> .pies-container { margin: auto; width: 800px; } .pies-container > .pie { width: 400px; float: left; } </style>
import { createApp } from 'vue'; import App from './App.vue'; createApp(App).mount('#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/22.2.6/css/dx.light.css" /> <script src="https://unpkg.com/core-js@2.6.12/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 waterLandRatio = [{ name: 'Land', area: 0.29, }, { name: 'Water', area: 0.71, }]; export const countries = [{ name: 'Russia', area: 0.12, }, { name: 'Canada', area: 0.07, }, { name: 'USA', area: 0.07, }, { name: 'China', area: 0.07, }, { name: 'Brazil', area: 0.06, }, { name: 'Australia', area: 0.05, }, { name: 'India', area: 0.02, }, { name: 'Others', area: 0.55, }];
window.config = { transpiler: 'plugin-babel', meta: { '*.vue': { loader: 'vue-loader', }, 'devextreme/localization.js': { 'esModule': true, }, }, paths: { 'npm:': 'https://unpkg.com/', }, map: { 'vue': 'npm:vue@3.2.47/dist/vue.esm-browser.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@1.0.15/index.js', 'mitt': 'npm:mitt/dist/mitt.umd.js', 'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.28.0/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@22.2.6/cjs', 'devextreme-vue': 'npm:devextreme-vue@22.2.6', 'jszip': 'npm:jszip@3.7.1/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@1.5.20/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.1.72/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@4.1.43/dist/dx-gantt.js', '@devextreme/runtime': 'npm:@devextreme/runtime@3.0.11', 'inferno': 'npm:inferno@7.4.11/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@7.4.11/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate@7.4.11/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js', 'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js', // Prettier 'prettier/standalone': 'npm:prettier@2.8.4/standalone.js', 'prettier/parser-html': 'npm:prettier@2.8.4/parser-html.js', }, packages: { 'devextreme-vue': { main: 'index.js', }, 'devextreme': { defaultExtension: 'js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:@devextreme/runtime@3.0.11/inferno/package.json', ], babelOptions: { sourceMaps: false, stage0: true, }, }; System.config(window.config);