DEV Community

XinYu Zhou
XinYu Zhou

Posted on

How to customize the labels of a pie chart in VChart?

Title

How to customize the labels of a pie chart in VChart?

Description

Can the labels of a VChart pie chart be customized? I want to add the values to the labels.

Solution

The label configuration of a pie chart is in the label field: https://visactor.io/vchart/option/pieChart#label. There is a property called formatMethod in this field, which is used to format the label content: https://visactor.io/vchart/option/pieChart#label.formatMethod. By configuring a function, the label can be formatted. The function receives parameters including the original text and data, and returns a string representing the formatted label text.

Code Example

const spec = {
  type: 'pie',
  data: [
    {
      id: 'id0',
      values: [
        { type: 'oxygen', value: '46.60' },
        { type: 'silicon', value: '27.72' },
        { type: 'aluminum', value: '8.13' },
        { type: 'iron', value: '5' },
        { type: 'calcium', value: '3.63' },
        { type: 'sodium', value: '2.83' },
        { type: 'potassium', value: '2.59' },
        { type: 'others', value: '3.5' }
      ]
    }
  ],
  outerRadius: 0.8,
  valueField: 'value',
  categoryField: 'type',
  title: {
    visible: true,
    text: 'Statistics of Surface Element Content'
  },
  legends: {
    visible: true,
    orient: 'left'
  },
  label: {
    visible: true,
    formatMethod: (text, datum) => {
      return `${text}: ${datum.value}`
    }
  },
  tooltip: {
    mark: {
      content: [
        {
          key: datum => datum['type'],
          value: datum => datum['value'] + '%'
        }
      ]
    }
  }
};

const vchart = new VChart(spec, { dom: CONTAINER_ID });
vchart.renderSync();

// Just for the convenience of console debugging, DO NOT COPY!
window['vchart'] = vchart;
Enter fullscreen mode Exit fullscreen mode

Result

After running the code, the labels can be formatted.

Online demo: https://codesandbox.io/p/sandbox/pie-label-format-9k8wlr?file=%2Fsrc%2Findex.ts%3A48%2C2

Related Documents

Top comments (0)