If you have technical questions, please create a support ticket in the DevExpress Support Center.
import React from 'react';
import {
Chart, Series, CommonSeriesSettings, Legend, Export, Title,
} from 'devextreme-react/chart';
import { dataSource } from './data.ts';
function App() {
return (
<Chart
id="chart"
palette="Soft"
dataSource={dataSource}
>
<CommonSeriesSettings
argumentField="state"
type="bar"
barPadding={0.5}
/>
<Series valueField="year1970" name="1970" />
<Series valueField="year1980" name="1980" />
<Series valueField="year1990" name="1990" />
<Series valueField="year2000" name="2000" />
<Series valueField="year2008" name="2008" />
<Series valueField="year2009" name="2009" />
<Legend
verticalAlignment="bottom"
horizontalAlignment="center"
/>
<Export enabled={true} />
<Title text="Oil Production" subtitle="(in millions tonnes)" />
</Chart>
);
}
export default App;
xxxxxxxxxx
import React from 'react';
import {
Chart, Series, CommonSeriesSettings, Legend, Export, Title,
} from 'devextreme-react/chart';
import { dataSource } from './data.js';
function App() {
return (
<Chart
id="chart"
palette="Soft"
dataSource={dataSource}
>
<CommonSeriesSettings
argumentField="state"
type="bar"
barPadding={0.5}
/>
<Series
valueField="year1970"
name="1970"
/>
<Series
valueField="year1980"
name="1980"
/>
<Series
valueField="year1990"
name="1990"
/>
<Series
valueField="year2000"
name="2000"
/>
<Series
valueField="year2008"
name="2008"
/>
<Series
valueField="year2009"
name="2009"
/>
<Legend
verticalAlignment="bottom"
horizontalAlignment="center"
/>
<Export enabled={true} />
<Title
text="Oil Production"
subtitle="(in millions tonnes)"
/>
</Chart>
);
}
export default App;
xxxxxxxxxx
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.tsx';
ReactDOM.render(
<App />,
document.getElementById('app'),
);
xxxxxxxxxx
export const dataSource = [{
state: 'Saudi Arabia',
year1970: 186.7,
year1980: 480.4,
year1990: 319.6,
year2000: 465,
year2008: 549.7,
year2009: 428.4,
}, {
state: 'USA',
year1970: 557.8,
year1980: 423.2,
year1990: 340.1,
year2000: 282.9,
year2008: 280,
year2009: 298.9,
}, {
state: 'China',
year1970: 32.7,
year1980: 87.7,
year1990: 165.1,
year2000: 126.6,
year2008: 191.3,
year2009: 181.1,
}, {
state: 'Canada',
year1970: 87.5,
year1980: 78.1,
year1990: 69.3,
year2000: 145.7,
year2008: 148.5,
year2009: 182.2,
}, {
state: 'Mexico',
year1970: 24.7,
year1980: 109.2,
year1990: 145.3,
year2000: 148.3,
year2008: 132.1,
year2009: 121.6,
}];
xxxxxxxxxx
window.exports = window.exports || {};
window.config = {
transpiler: 'ts',
typescriptOptions: {
module: 'system',
emitDecoratorMetadata: true,
experimentalDecorators: true,
jsx: 'react',
},
meta: {
'react': {
'esModule': true,
},
'typescript': {
'exports': 'ts',
},
'devextreme/time_zone_utils.js': {
'esModule': true,
},
'devextreme/localization.js': {
'esModule': true,
},
'devextreme/viz/palette.js': {
'esModule': true,
},
'openai': {
'esModule': true,
},
},
paths: {
'npm:': 'https://unpkg.com/',
'bundles:': 'bundles/',
'externals:': 'bundles/externals/',
},
defaultExtension: 'js',
map: {
'ts': 'npm:plugin-typescript@8.0.0/lib/plugin.js',
'typescript': 'npm:typescript@4.2.4/lib/typescript.js',
'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js',
'react': 'npm:react@17.0.2/umd/react.development.js',
'react-dom': 'npm:react-dom@17.0.2/umd/react-dom.development.js',
'prop-types': 'npm:prop-types/prop-types.js',
'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js',
'luxon': 'npm:luxon@3.4.4/build/global/luxon.min.js',
'es6-object-assign': 'npm:es6-object-assign',
'devextreme': 'npm:devextreme@link:../../packages/devextreme/artifacts/npm/devextreme/cjs',
'devextreme-react': 'npm:devextreme-react@link:../../packages/devextreme-react/npm/cjs',
'devextreme-quill': 'npm:devextreme-quill@1.7.1/dist/dx-quill.min.js',
'devexpress-diagram': 'npm:devexpress-diagram@2.2.5/dist/dx-diagram.js',
'devexpress-gantt': 'npm:devexpress-gantt@4.1.54/dist/dx-gantt.js',
'@devextreme/runtime': 'npm:@devextreme/runtime@3.0.12',
'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/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',
'devextreme-cldr-data': 'npm:devextreme-cldr-data@1.0.3',
// SystemJS plugins
'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.8/standalone.js',
'prettier/parser-html': 'npm:prettier@2.8.8/parser-html.js',
},
packages: {
'devextreme': {
defaultExtension: 'js',
},
'devextreme-react': {
main: 'index.js',
},
'devextreme/events/utils': {
main: 'index',
},
'devextreme/localization/messages': {
format: 'json',
defaultExtension: 'json',
},
'devextreme/events': {
main: 'index',
},
'es6-object-assign': {
main: './index.js',
defaultExtension: 'js',
},
},
packageConfigPaths: [
'npm:@devextreme/*/package.json',
'npm:@devextreme/runtime@3.0.12/inferno/package.json',
],
babelOptions: {
sourceMaps: false,
stage0: true,
react: true,
},
};
System.config(window.config);
xxxxxxxxxx
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.js';
ReactDOM.render(<App />, document.getElementById('app'));
xxxxxxxxxx
export const dataSource = [
{
state: 'Saudi Arabia',
year1970: 186.7,
year1980: 480.4,
year1990: 319.6,
year2000: 465,
year2008: 549.7,
year2009: 428.4,
},
{
state: 'USA',
year1970: 557.8,
year1980: 423.2,
year1990: 340.1,
year2000: 282.9,
year2008: 280,
year2009: 298.9,
},
{
state: 'China',
year1970: 32.7,
year1980: 87.7,
year1990: 165.1,
year2000: 126.6,
year2008: 191.3,
year2009: 181.1,
},
{
state: 'Canada',
year1970: 87.5,
year1980: 78.1,
year1990: 69.3,
year2000: 145.7,
year2008: 148.5,
year2009: 182.2,
},
{
state: 'Mexico',
year1970: 24.7,
year1980: 109.2,
year1990: 145.3,
year2000: 148.3,
year2008: 132.1,
year2009: 121.6,
},
];
xxxxxxxxxx
<html lang="en">
<head></head>
<body class="dx-viewport">
<div class="demo-container">
<div id="app"></div>
</div>
</body>
</html>
xxxxxxxxxx
#chart {
height: 440px;
}
Bind to Data
In this demo, the data source array consists of objects with the same field structure. Assign the state
field to the argumentField property of the commonSeriesSettings object to specify the common argument for the series. Then, define the series array of objects. In each object, specify the valueField property.
Specify Common Series Settings
To configure settings for all series in the chart, use the commonSeriesSettings object. Specify the barPadding property to control the padding and the width of all bars in a series.
Customize Chart Legend
Use the verticalAlignment and horizontalAlignment properties of the legend object to specify the legend layout.
Export Chart
To allow users to export your bar chart into a PNG, JPEG, PDF, or SVG file, or print the chart, set the export.enabled property to true. Since the export functionality is enabled in this demo, you can click the hamburger button in the chart to invoke a drop-down menu with export and print commands.