Skip to main content

Setting width, rotation, and circumference of doughnut chart (Chart.js)

Custom size and rotation

To customize the size of a doughnut chart, set options.cutoutPercentage. To customize the rotation of the segments, set options.rotation (in radians).

Here's an example with custom settings:

{
type: 'doughnut',
data: {
datasets: [
{
data: [94, 25, 72, 70, 14],
backgroundColor: [
'rgb(255, 99, 132)',
'rgb(255, 159, 64)',
'rgb(255, 205, 86)',
'rgb(75, 192, 192)',
'rgb(54, 162, 235)',
],
label: 'Dataset 1',
},
],
labels: ['Red', 'Orange', 'Yellow', 'Green', 'Blue'],
},
options: {
cutoutPercentage: 80,
rotation: -Math.PI / 2,
circumference: Math.PI,
legend: {
display: false,
},
},
}

It results in the following:

Custom circumference

options.circumference controls how much of the circle the chart should follow.

Recall the formula to convert degrees to radians: radians = degrees * pi / 180.

If we set it to Math.PI (equivalent to 180 degrees), then we get a partial circle (rotation is set to 45 degrees):

{
type: 'doughnut',
data: {
datasets: [
{
data: [94, 25, 72, 70, 14],
backgroundColor: [
'rgb(255, 99, 132)',
'rgb(255, 159, 64)',
'rgb(255, 205, 86)',
'rgb(75, 192, 192)',
'rgb(54, 162, 235)',
],
label: 'Dataset 1',
},
],
labels: ['Red', 'Orange', 'Yellow', 'Green', 'Blue'],
},
options: {
cutoutPercentage: 80,
rotation: -Math.PI / 2,
circumference: Math.PI,
legend: {
display: false,
},
},
}

Full options

Here's the table of customizable doughnut and pie chart options:

NameTypeDefaultDescription
cutoutPercentagenumber50 - for doughnut, 0 - for pieThe percentage of the chart that is empty in the middle.
rotationnumber-0.5 * Math.PIStarting angle to draw slices from.
circumferencenumber2 * Math.PISweep to allow slices to cover.

You can customize each dataset with the following attributes:

NameDescription
backgroundColorColor or list of colors for each arc/slice
borderColorColor or list of colors for each arc/slice
borderWidthInteger or list of integers defining the border size for each slice
weightList of numbers indicating the relative thickness of each dataset

Providing values for weight will cause the datasets to be drawn with a size relative to all other weights.

Labels

To learn how to customize doughnut and pie chart labels, follow this guide.

Other questions

Head back to docs to learn more or ask questions in the community.