If you have technical questions, please create a support ticket in the DevExpress Support Center.
import React from 'react';
import PieChart, {
Legend,
Export,
Series,
Label,
Font,
Connector,
} from 'devextreme-react/pie-chart';
import { dataSource } from './data.ts';
function customizeText(arg: { valueText: string; percentText: string; }) {
return `${arg.valueText} (${arg.percentText})`;
}
function App() {
return (
<PieChart id="pie"
palette="Bright"
dataSource={dataSource}
title="Olympic Medals in 2008"
>
<Legend
orientation="horizontal"
itemTextPosition="right"
horizontalAlignment="center"
verticalAlignment="bottom"
columnCount={4} />
<Export enabled={true} />
<Series argumentField="country" valueField="medals">
<Label
visible={true}
position="columns"
customizeText={customizeText}>
<Font size={16} />
<Connector visible={true} width={0.5} />
</Label>
</Series>
</PieChart>
);
}
export default App;
xxxxxxxxxx
import React from 'react';
import PieChart, {
Legend,
Export,
Series,
Label,
Font,
Connector,
} from 'devextreme-react/pie-chart';
import { dataSource } from './data.js';
function customizeText(arg) {
return `${arg.valueText} (${arg.percentText})`;
}
function App() {
return (
<PieChart
id="pie"
palette="Bright"
dataSource={dataSource}
title="Olympic Medals in 2008"
>
<Legend
orientation="horizontal"
itemTextPosition="right"
horizontalAlignment="center"
verticalAlignment="bottom"
columnCount={4}
/>
<Export enabled={true} />
<Series
argumentField="country"
valueField="medals"
>
<Label
visible={true}
position="columns"
customizeText={customizeText}
>
<Font size={16} />
<Connector
visible={true}
width={0.5}
/>
</Label>
</Series>
</PieChart>
);
}
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 = [{
country: 'USA',
medals: 110,
}, {
country: 'China',
medals: 100,
}, {
country: 'Russia',
medals: 72,
}, {
country: 'Britain',
medals: 47,
}, {
country: 'Australia',
medals: 46,
}, {
country: 'Germany',
medals: 41,
}, {
country: 'France',
medals: 40,
}, {
country: 'South Korea',
medals: 31,
}];
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 = [
{
country: 'USA',
medals: 110,
},
{
country: 'China',
medals: 100,
},
{
country: 'Russia',
medals: 72,
},
{
country: 'Britain',
medals: 47,
},
{
country: 'Australia',
medals: 46,
},
{
country: 'Germany',
medals: 41,
},
{
country: 'France',
medals: 40,
},
{
country: 'South Korea',
medals: 31,
},
];
xxxxxxxxxx
<html lang="en">
<head></head>
<body class="dx-viewport">
<div class="demo-container">
<div id="app"></div>
</div>
</body>
</html>
xxxxxxxxxx
#pie {
height: 440px;
}
The series.label object allows you to specify the following settings:
-
visible
Specifies the visibility of point labels. -
position
Specifies a label position relative to the PieChart.-
outside
The labels are outside the component. -
columns
The labels are outside the component and are arranged in columns. In this demo, you can see this mode in action. -
inside
The labels are inside the points.
-
-
customizeText
A function that returns text displayed by point labels. -
font
Specifies font properties for label text. This demo uses the nested size property to change the font size. -
connector
Specifies connector properties for labels. In this demo, the nested visible property is enabled, and the connector width is set to 0.5.
You can also format label text and change word wrap mode, specify the background color and borders, and rotate and shift the labels.