- Pie chart
- Radius customization
- Various radius pie chart
- Donut chart
- Text and fill color mapping
- Customization
Contact Support
Pie and Donut in EJ2 JavaScript 3D Circular Chart control
19 Mar 202422 minutes to read
Pie chart
To render a pie series, inject the PieSeries3D
module using CircularChart3D.Inject(PieSeries3D)
method.
var circularchart = new ej.charts.CircularChart3D({
series: [
{
dataSource: [
{ x: 'Jan', y: 3 }, { x: 'Feb', y: 3.5 },
{ x: 'Mar', y: 7 }, { x: 'Apr', y: 13.5 },
{ x: 'May', y: 19 }, { x: 'Jun', y: 23.5 },
{ x: 'Jul', y: 26 }, { x: 'Aug', y: 25 },
{ x: 'Sep', y: 21 }, { x: 'Oct', y: 15 }
],
xName: 'x',
yName: 'y'
}
],
tilt: -45,
legendSettings: { visible: false }
}, '#element');
<!DOCTYPE html><html lang="en"><head>
<title>EJ2 Animation</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Typescript UI Controls">
<meta name="author" content="Syncfusion">
<link href="index.css" rel="stylesheet">
<script src="https://cdn.syncfusion.com/ej2/29.1.33/dist/ej2.min.js" type="text/javascript"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id="container">
<div id="element"></div>
</div>
<script>
var ele = document.getElementById('container');
if(ele) {
ele.style.visibility = "visible";
}
</script>
<script src="index.js" type="text/javascript"></script>
</body></html>
Radius customization
By default, the radius of the pie series will be 80% of the size, which is the minimum of the 3D Circular Chart’s width and height. You can customize this by using the radius
property of the series.
var circularchart = new ej.charts.CircularChart3D({
series: [
{
dataSource: [
{ x: 'Jan', y: 3 }, { x: 'Feb', y: 3.5 },
{ x: 'Mar', y: 7 }, { x: 'Apr', y: 13.5 },
{ x: 'May', y: 19 }, { x: 'Jun', y: 23.5 },
{ x: 'Jul', y: 26 }, { x: 'Aug', y: 25 },
{ x: 'Sep', y: 21 }, { x: 'Oct', y: 15 },
{ x: 'Nov', y: 15 }, { x: 'Dec', y: 15 }
],
xName: 'x',
yName: 'y',
radius: '100%'
}
],
tilt: -45,
legendSettings: { visible: false }
}, '#element');
<!DOCTYPE html><html lang="en"><head>
<title>EJ2 Animation</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Typescript UI Controls">
<meta name="author" content="Syncfusion">
<link href="index.css" rel="stylesheet">
<script src="https://cdn.syncfusion.com/ej2/29.1.33/dist/ej2.min.js" type="text/javascript"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id="container">
<div id="element"></div>
</div>
<script>
var ele = document.getElementById('container');
if(ele) {
ele.style.visibility = "visible";
}
</script>
<script src="index.js" type="text/javascript"></script>
</body></html>
Various radius pie chart
You can assign different radii to each slice of the pie by fetching the radius from the data source and using it with the radius
property in the series
.
var circularchart = new ej.charts.CircularChart3D({
series: [
{
dataSource: [
{ x: 'Belgium', y: 551500, r: '110.7' },
{ x: 'Cuba', y: 312685, r: '124.6' },
{ x: 'Dominican Republic', y: 350000, r: '137.5' },
{ x: 'Egypt', y: 301000, r: '150.8' },
{ x: 'Kazakhstan', y: 300000, r: '155.5' },
{ x: 'Somalia', y: 357022, r: '160.6' },
{ x: 'Argentina', y: 505370, r: '100' }
],
xName: 'x',
yName: 'y',
radius: 'r',
dataLabel: {
visible: true, position: 'Outside',
name: 'x'
},
innerRadius: '20%'
}
],
tilt: -15,
title: 'Countries compared by population density and total area',
legendSettings: { visible: true },
enableAnimation: true
}, '#element');
<!DOCTYPE html><html lang="en"><head>
<title>EJ2 Animation</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Typescript UI Controls">
<meta name="author" content="Syncfusion">
<link href="index.css" rel="stylesheet">
<script src="https://cdn.syncfusion.com/ej2/29.1.33/dist/ej2.min.js" type="text/javascript"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id="container">
<div id="element"></div>
</div>
<script>
var ele = document.getElementById('container');
if(ele) {
ele.style.visibility = "visible";
}
</script>
<script src="index.js" type="text/javascript"></script>
</body></html>
Donut chart
To achieve a donut in the pie series, customize the innerRadius
property of the series. By setting a value greater than 0%, a donut will appear. The innerRadius
property takes value from 0% to 100% of the pie radius.
var circularchart = new ej.charts.CircularChart3D({
series: [
{
dataSource: [
{ x: 'Jan', y: 3 }, { x: 'Feb', y: 3.5 },
{ x: 'Mar', y: 7 }, { x: 'Apr', y: 13.5 },
{ x: 'May', y: 19 }, { x: 'Jun', y: 23.5 },
{ x: 'Jul', y: 26 }, { x: 'Aug', y: 25 },
{ x: 'Sep', y: 21 }, { x: 'Oct', y: 15 },
{ x: 'Nov', y: 15 }, { x: 'Dec', y: 15 }
],
xName: 'x',
yName: 'y',
innerRadius: '40%'
}
],
tilt: -45,
legendSettings: { visible: false }
}, '#element');
<!DOCTYPE html><html lang="en"><head>
<title>EJ2 Animation</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Typescript UI Controls">
<meta name="author" content="Syncfusion">
<link href="index.css" rel="stylesheet">
<script src="https://cdn.syncfusion.com/ej2/29.1.33/dist/ej2.min.js" type="text/javascript"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id="container">
<div id="element"></div>
</div>
<script>
var ele = document.getElementById('container');
if(ele) {
ele.style.visibility = "visible";
}
</script>
<script src="index.js" type="text/javascript"></script>
</body></html>
Text and fill color mapping
The text and the fill color from the data source can be mapped to the 3D Circular Chart using pointColorMapping
in the series and name
in the data label, respectively.
var circularchart = new ej.charts.CircularChart3D({
series: [
{
dataSource: [
{ x: 'Jan', y: 3, fill: '#498fff', text:'January' },
{ x: 'Feb', y: 3.5, fill: '#ffa060', text: 'February' },
{ x: 'Mar', y: 7, fill: '#ff68b6', text: 'March' },
{ x: 'Apr', y: 13.5, fill: '#81e2a1', text: 'April' }
],
xName: 'x',
yName: 'y',
pointColorMapping: 'fill',
dataLabel: {
visible: true,
name: 'text'
}
}
],
tilt: -45,
legendSettings: { visible: false }
}, '#element');
<!DOCTYPE html><html lang="en"><head>
<title>EJ2 Animation</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Typescript UI Controls">
<meta name="author" content="Syncfusion">
<link href="index.css" rel="stylesheet">
<script src="https://cdn.syncfusion.com/ej2/29.1.33/dist/ej2.min.js" type="text/javascript"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id="container">
<div id="element"></div>
</div>
<script>
var ele = document.getElementById('container');
if(ele) {
ele.style.visibility = "visible";
}
</script>
<script src="index.js" type="text/javascript"></script>
</body></html>
Customization
Individual points in pie chart can be customized using the pointRender
event.
var circularchart = new ej.charts.CircularChart3D({
series: [
{
dataSource: [
{ x: 'Jan', y: 3 },
{ x: 'Feb', y: 3.5 },
{ x: 'Mar', y: 7 },
{ x: 'Apr', y: 13.5 }
],
xName: 'x',
yName: 'y'
}
],
tilt: -45,
legendSettings: { visible: false },
pointRender: (args) => {
if ((args.point.x).indexOf('Apr') > -1) {
args.fill = '#f4bc42';
}
else if ((args.point.x).indexOf('Mar') > -1) {
args.fill = '#DE3D8A';
}
else if ((args.point.x).indexOf('Feb') > -1) {
args.fill = '#F7523F';
}
else {
args.fill = '#597cf9';
}
}
}, '#element');
<!DOCTYPE html><html lang="en"><head>
<title>EJ2 Animation</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Typescript UI Controls">
<meta name="author" content="Syncfusion">
<link href="index.css" rel="stylesheet">
<script src="https://cdn.syncfusion.com/ej2/29.1.33/dist/ej2.min.js" type="text/javascript"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id="container">
<div id="element"></div>
</div>
<script>
var ele = document.getElementById('container');
if(ele) {
ele.style.visibility = "visible";
}
</script>
<script src="index.js" type="text/javascript"></script>
</body></html>