Angular ChartsDonut Series
angular logo

A Donut Series has all the benefits of a Pie Series and allows displaying multiple datasets in a single chart.

Simple Donut

To create a Donut Series, use the donut series type and specify an innerRadiusRatio.

series: [
    {
        type: 'donut',
        calloutLabelKey: 'asset',
        angleKey: 'amount',
        innerRadiusRatio: 0.7,
    },
],

The innerRadiusRatio should be a value between 0 and 1 and defines the radius of the inner circle as a ratio of the outer radius of the chart.

Inner Labels

The innerLabels property can be used to put several lines of text in the space inside a Donut Series.

The colour of the centre area can be changed by using innerCircle.

series: [
    {
        // ...
        innerLabels: [
            {
                text: 'Total Investment',
                fontWeight: 'bold',
            },
            {
                text: '$100,000',
                margin: 4,
                fontSize: 48,
                color: 'green',
            },
        ],
        innerCircle: {
            fill: '#c9fdc9',
        },
    },
],

Multiple Donuts

To render multiple Donut Series in a single chart without overlapping, set an outerRadiusRatio in conjunction with an innerRadiusRatio.

series: [
    {
        // outer series
        // ...
        outerRadiusRatio: 1, // the default
        innerRadiusRatio: 0.9,
        title: { text: 'Previous Year', showInLegend: true },
    },
    {
        // inner series
        // ...
        outerRadiusRatio: 0.6,
        innerRadiusRatio: 0.2,
        title: { text: 'Current Year', showInLegend: true },
    },
],

In the above configuration:

  • The difference of 0.3 between the innerRadiusRatio of the outer series and the outerRadiusRatio of the inner series determines the size of the gap between the outer and inner series.
  • The difference between outerRadiusRatio and innerRadiusRatio for each series determines the thickness of the ring for that series.
  • The title provided for each series is displayed above the Donut Series if there is space.
  • Using showInLegend displays the title within the legend item, allowing differentiation between the two series within the legend.

Shared Legend

Providing a matching legendItemKey allows synchronising of legend items across multiple Donut Series. When a legend item is clicked, all items with a matching legendItemKey are toggled.

series: [
    {
        // ...
        calloutLabelKey: 'asset',
        legendItemKey: 'asset',
    },
    {
        // ...
        legendItemKey: 'asset',
        showInLegend: false,
    },
],

Using showInLegend: false for the second series, ensures that there are no duplicate legend items.

API Reference

Properties available on the AgDonutSeriesOptions interface.

type*
Type'donut'
angleKey*
Typestring
innerLabels
TypeAgDonutInnerLabel[]
title
TypeAgDonutTitleOptions
calloutLabel
TypeAgDonutSeriesLabelOptions
sectorLabel
TypeAgDonutSeriesSectorLabelOptions
calloutLine
TypeAgDonutSeriesCalloutOptions
fills
TypeCssColor[]
strokes
TypeCssColor[]
fillOpacity
TypeOpacity
strokeOpacity
TypeOpacity
strokeWidth
TypePixelSize
rotation
TypeDegree
outerRadiusOffset
TypePixelSize
outerRadiusRatio
TypeRatio
innerRadiusOffset
TypePixelSize
innerRadiusRatio
TypeRatio
radiusMin
Typenumber
radiusMax
Typenumber
shadow
TypeAgDropShadowOptions
tooltip
TypeAgSeriesTooltip
innerCircle
TypeAgDonutInnerCircle
cornerRadius
TypePixelSize
sectorSpacing
TypePixelSize
formatter
TypeFunction
cursor
Typestring
highlightStyle
TypeAgSeriesHighlightStyle
nodeClickRange
TypeInteractionRange
showInLegend
Typeboolean
listeners
TypeAgSeriesListeners
lineDash
TypePixelSize[]
lineDashOffset
TypePixelSize
radiusKey
Typestring
calloutLabelKey
Typestring
sectorLabelKey
Typestring
legendItemKey
Typestring
angleName
Typestring
radiusName
Typestring
calloutLabelName
Typestring
sectorLabelName
Typestring
id
Typestring
Defaultauto-generated value
data
TypeTDatum[]
visible
Typeboolean