You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中Chart.js环形图(Doughnut)使用formatter展示百分比不生效

问题原因

你当前遇到的datalabels formatter不生效的核心是chartjs-plugin-datalabels属于Chart.js的独立插件,默认不会集成在基础包和ng2-charts(Angular封装的Chart.js库)中,需要额外安装、注册并绑定到图表组件。

解决步骤

1. 安装对应版本的插件

要注意插件版本和你项目中Chart.js版本兼容:

  • Chart.js v2.x → 安装chartjs-plugin-datalabels@1.x
  • Chart.js v3.x → 安装chartjs-plugin-datalabels@2.x
  • Chart.js v4.x → 安装chartjs-plugin-datalabels@3.x
    安装命令示例(以Chart.js v4适配版本为例):
    npm install chartjs-plugin-datalabels --save

2. 组件中注册插件

在你的环形图对应的ts组件文件中,导入插件并声明插件数组:

// 顶部导入插件
import * as ChartDataLabels from 'chartjs-plugin-datalabels';

// 组件类内部新增插件配置
public doughnutChartPlugins = [ChartDataLabels];

3. 补充HTML组件绑定

在canvas的baseChart属性中新增plugins绑定:

<canvas baseChart class="chart" [data]="doughnutChartData" [labels]="doughnutChartLabels"
        [options]="doughnutChartOptions" [chartType]="doughnutChartType"  
        [colors]="doughnutChartColors" [plugins]="doughnutChartPlugins">
</canvas>

4. 完善图表配置

在doughnutChartOptions的datalabels配置中新增display: true强制开启标签渲染,同时确认你的doughnutChartData格式符合要求:

public doughnutChartOptions: any = {
  animation: false,
  responsive: true,
  legend: {
    display: true,
    labels: {
      fontColor: '#9aa0ac',
    },
  },
  plugins: {
    datalabels: {
      display: true, // 新增这行强制开启标签
      formatter: (value, ctx) => {
        let sum = 0;
        let dataArr = ctx.chart.data.datasets[0].data;
        dataArr.map(data => {
            sum += data;
        });
        let percentage = (value*100 / sum).toFixed(2)+"%";
        return percentage;
      },
      color: '#fff',
    }
  }
};

// 确认doughnutChartData赋值格式正确,示例:
doughnutChartData = [
  { data: [30, 40, 30] } // 必须是包在对象内的data属性结构,不能直接放数值数组
];

做完以上步骤后重新编译项目即可看到环形图上的百分比标签。

内容的提问来源于stack exchange,提问作者zohra makhloufi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:15:03