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

Chart.js环形图如何基于当前值与最大值实现百分比展示?

Chart.js环形图实现进度占比的正确数据配置

当用Chart.js制作环形图展示进度时,常会遇到这个问题:比如当前值为1、最大值为2,想要环形图显示50%已完成、50%未完成,但直接设置data = [1, 2]的话,图表会显示33%和66.7%——这是因为Chart.js默认按数据总和的占比计算,1+2=3,1/3≈33%,2/3≈66.7%,不符合进度条的预期效果(比如完成2道共4道测验,需要呈现50%/50%的占比)。

解决方法很简单,调整数据数组的构成:
将数据设置为data = [currentValue, maxValue - currentValue];

这样数据总和等于最大值maxValue,currentValue的占比就是currentValue/maxValue,正好对应进度占比。比如:

  • 当前值1、最大值2:data = [1, 1],总和2,各占50%
  • 当前值2、最大值4:data = [2, 2],总和4,各占50%

下面是完整的代码示例:

// 配置示例:完成2道,共4道测验的进度环形图
const currentCompleted = 2;
const totalTasks = 4;

new Chart(document.getElementById('progressChart'), {
    type: 'doughnut',
    data: {
        datasets: [{
            data: [currentCompleted, totalTasks - currentCompleted],
            backgroundColor: ['#2196F3', '#f0f0f0'] // 已完成/未完成的颜色
        }]
    },
    options: {
        cutout: '70%', // 调整环形的空心大小,更像进度条
        responsive: true
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:07:40