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

Chart.js datalabels插件异常:第二个图表需显示数值而非对象

问题解决:ChartDataLabels显示对象而非数值(仅第二个图表显示标签)

问题原因

你在第二个图表中通过parsing配置让Chart.js从对象数组提取YM(X轴)和YieldActual(Y轴)值,但ChartDataLabels插件的formatter默认接收的是原始数据对象,不是解析后的Y轴数值,直接拼接%就会显示对象字符串。

修复方案

修改第二个图表的datalabels.formatter,明确从数据对象中取出YieldActual字段:

修正后的第二个图表核心代码片段

datalabels: {
    anchor: 'end',
    align: 'end',
    labels: {
        value: {
            color: 'white'
        }
    },
    formatter: (val) => {
        // 从数据对象中提取实际数值再拼接%
        return val.YieldActual + '%';
    }
}

完整的第二个图表配置(修正后)

var ctxYieldHistory = document.getElementById('barChartYieldHistory').getContext("2d");
window.myBar = new Chart(ctxYieldHistory, {
    type: 'bar',
    data: yieldDataMonthly,                
    options: {
        responsive: true,
        maintainAspectRatio: false,
        parsing: {
            xAxisKey: 'YM',
            yAxisKey: 'YieldActual'
        },
        scales: {
            y: {
                ticks: {
                    beginAtZero: false,
                    stepSize: 20,
                    callback: function (value, index, ticks) {
                        return value + '%';
                    }
                }
            }
        },
        plugins: {
            legend: {
                display: false
            },
            datalabels: {
                anchor: 'end',
                align: 'end',
                labels: {
                    value: {
                        color: 'white'
                    }
                },
                formatter: (val) => {
                    return val.YieldActual + '%';
                }
            },
            annotation: {
                annotations: {
                    line: {
                        type: 'line',
                        yMin: AnnotationValue,
                        yMax: AnnotationValue,
                        borderWidth: 2,
                        borderColor: 'white'
                    }
                }
            }
        }
    }
});

额外说明

  • 第一个图表未配置datalabels插件,自然不会显示数据标签,符合你"仅第二个图表显示"的需求。
  • 确认YieldData中的每个对象确实包含YieldActual字段(从你的代码逻辑看是存在的),若字段名不一致,需对应调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:09:56