Your search did not match any results.
Charts

Export Several Charts

The DevExpress.viz.exportWidgets(widgetInstances, options) method allows you to export several charts to a single image or document. The widgetInstances parameter accepts an array with the following format:

[
    [ widgetInstance0_1, widgetInstance0_2, ..., widgetInstance0_N ],
    [ widgetInstance1_1, widgetInstance1_2, ..., widgetInstance1_M ],
    ...
    [ widgetInstanceP_1, widgetInstanceP_2, ..., widgetInstanceP_R ]
]

Each nested array contains widget instances that should be in the same row in the exported document. In this demo, chartInstance and pieChartInstance occupy the only row in the document.

The options parameter accepts an object whose fields allow you to configure export options. In this demo, we specify the fileName and format. Refer to the method description for information on other available fields.

Copy to CodeSandBox
Apply
Reset
<template> <div id="chart-demo"> <div class="charts"> <dx-chart id="chart" ref="chart" :data-source="goldMedals" :rotated="true" title="Olympic Gold Medals in 2008" > <dx-series type="bar" argument-field="country" value-field="medals" color="#f3c40b" > <dx-label :visible="true"/> </dx-series> <dx-legend :visible="false"/> </dx-chart> <dx-pie-chart id="pieChart" ref="pieChart" :data-source="allMedals" palette="Harmony Light" title="Total Olympic Medals\n in 2008" > <dx-pie-series argument-field="country" value-field="medals" > <dx-pie-label :visible="true"> <dx-connector :visible="true"/> </dx-pie-label> </dx-pie-series> </dx-pie-chart> </div> <div class="controls-pane"> <dx-button id="export" :width="145" icon="export" type="default" text="Export" @click="onClick()" /> </div> </div> </template> <script> import DxChart, { DxSeries, DxLabel, DxLegend } from 'devextreme-vue/chart'; import DxPieChart, { DxSeries as DxPieSeries, DxLabel as DxPieLabel, DxConnector } from 'devextreme-vue/pie-chart'; import { exportWidgets } from 'devextreme/viz/export'; import DxButton from 'devextreme-vue/button'; import { allMedals, goldMedals } from './data.js'; export default { components: { DxChart, DxSeries, DxLabel, DxLegend, DxPieChart, DxPieSeries, DxPieLabel, DxConnector, DxButton }, data() { return { allMedals, goldMedals }; }, methods: { onClick() { const chartInstance = this.$refs.chart.instance; const pieChartInstance = this.$refs.pieChart.instance; exportWidgets([[chartInstance, pieChartInstance]], { fileName: 'chart', format: 'PNG' }); } } }; </script> <style> #chart-demo { height: 460px; } .charts { width: 820px; margin: 0 auto; height: 374px; margin-bottom: 40px; font-size: 0; } #chart, #pieChart{ width: 395px; height: 100%; display: inline-block; vertical-align: top; } #chart { margin-right: 30px; } .controls-pane { text-align: center; } </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="stylesheet" type="text/css" 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 allMedals = [{ country: 'USA', medals: 110 }, { country: 'China', medals: 100 }, { country: 'Russia', medals: 71 }, { country: 'UK', medals: 47 }, { country: 'Australia', medals: 46 }, { country: 'Germany', medals: 41 }, { country: 'France', medals: 41 }, { country: 'South Korea', medals: 31 }]; export const goldMedals = [{ country: 'China', medals: 51 }, { country: 'USA', medals: 36 }, { country: 'Russia', medals: 22 }, { country: 'UK', medals: 19 }, { country: 'Germany', medals: 16 }, { country: 'Australia', medals: 14 }, { country: 'South Korea', medals: 13 }, { country: 'France', medals: 7 }];
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', 'stackblur-canvas': 'npm:stackblur-canvas', 'rgbcolor': 'npm:rgbcolor', 'canvg': 'npm:canvg', '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 } });