Donut Chart
Donut chart shows data as proportional segments of a disc and has a hollowed out center. Donut charts can be segmented by either multiple measures or an attribute, and allow viewers to visualize component parts of a whole.

Structure
import '@gooddata/react-components/styles/css/main.css';
import { DonutChart } from '@gooddata/react-components';
<DonutChart
    projectId={<workspace-id>}
    measures={<measures>}
    config={<chart-config>}
    sdk={<sdk>}
    …
/>
Example
import '@gooddata/react-components/styles/css/main.css';
import { DonutChart } from '@gooddata/react-components';
const measures = [
    {
        measure: {
            localIdentifier: 'franchiseFeesAdRoyaltyIdentifier',
            definition: {
                measureDefinition: {
                    item: {
                        identifier: franchiseFeesAdRoyaltyIdentifier
                    }
                }
            },
            format: '#,##0'
        }
    },
    {
        measure: {
            localIdentifier: 'franchiseFeesInitialFranchiseFeeIdentifier',
            definition: {
                measureDefinition: {
                    item: {
                        identifier: franchiseFeesInitialFranchiseFeeIdentifier
                    }
                }
            },
            format: '#,##0'
        }
    },
    {
        measure: {
            localIdentifier: 'franchiseFeesIdentifierOngoingRoyalty',
            definition: {
                measureDefinition: {
                    item: {
                        identifier: franchiseFeesIdentifierOngoingRoyalty
                    }
                }
            },
            format: '#,##0'
        }
    }
];
<div style={{ height: 300 }}>
    <DonutChart
        projectId={workspaceId}
        measures={measures}
    />
</div>
Properties
| Name | Required? | Type | Description | 
|---|---|---|---|
| projectId | true | string | The workspace ID | 
| measures | true | Measure[] | An array of measure definitions | 
| viewBy | false | Attribute | An attribute definition | 
| filters | false | Filter[] | An array of filter definitions | 
| config | false | ChartConfig | The chart configuration object | 
| locale | false | string | The localization of the chart. Defaults to en-US. For other languages, see the full list of available localizations. | 
| drillableItems | false | DrillableItem[] | An array of points and attribute values to be drillable. | 
| sdk | false | SDK | A configuration object where you can define a custom domain and other API options | 
| ErrorComponent | false | Component | A component to be rendered if this component is in error state. See ErrorComponent. | 
| LoadingComponent | false | Component | A component to be rendered if this component is in loading state. See LoadingComponent. | 
| onError | false | Function | A callback when the component updates its error state | 
| onExportReady | false | Function | A callback when the component is ready for exporting its data | 
| onLoadingChanged | false | Function | A callback when the component updates its loading state | 
The following example shows the supported config structure with sample values. To see descriptions of individual options, see ChartConfig section.
{
    colors: ['rgb(195, 49, 73)', 'rgb(168, 194, 86)'],
    colorPalette: [{
        guid: '01',
        fill: {
            r: 195,
            g: 49,
            b: 73
        }
    }, {
        guid: '02',
        fill: {
            r: 168,
            g: 194,
            b: 86
        }
    }],
    colorMapping: [{
        predicate: (headerItem) => {
            return headerItem.measureHeaderItem && (headerItem.measureHeaderItem.localIdentifier === 'm1_localIdentifier')
        },
        color: {
            type: 'guid',
            value: '02'
        }
    }],
    legend: {
        enabled: true,
        position: 'top',
    },
    dataLabels: {
        visible: 'auto'
    },
    separators: {
        thousand: ',',
        decimal: '.'
    }
}