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

如何用ChartJS实现横向条形图并设置X轴0-100刻度?

解决方案

你的代码存在两个关键问题,导致横向条形图配置失效、X轴范围设置不生效:

1. Y轴配置格式错误

scales.y被写成了数组格式[{ stacked: true }],但Chart.js要求每个轴的配置是对象而非数组,这会直接导致轴配置不生效,进而干扰X轴的范围设置。

2. 冗余配置(可优化)

数据集里的axis: 'y'属于冗余配置,因为已经通过indexAxis: 'y'指定了横向条形图,该配置可直接移除。


修正后的完整JavaScript代码

var chartContainer2 = document.getElementById('skills0');
var ctxSkills = chartContainer2.getContext('2d');

const data = {
    labels: ['a', 'b', 'c', 'd', 'e', 'f', 'g'],
    datasets: [{
        label: 'My First Dataset',
        data: [65, 59, 80, 81, 56, 55, 40],
        fill: false,
        backgroundColor: [
            'rgba(255, 99, 132, 0.2)',
            'rgba(255, 159, 64, 0.2)',
            'rgba(255, 205, 86, 0.2)',
            'rgba(75, 192, 192, 0.2)',
            'rgba(54, 162, 235, 0.2)',
            'rgba(153, 102, 255, 0.2)',
            'rgba(201, 203, 207, 0.2)'
        ],
        borderColor: [
            'rgb(255, 99, 132)',
            'rgb(255, 159, 64)',
            'rgb(255, 205, 86)',
            'rgb(75, 192, 192)',
            'rgb(54, 162, 235)',
            'rgb(153, 102, 255)',
            'rgb(201, 203, 207)'
        ],
        borderWidth: 1
    }]
};

var chartBar = new Chart(chartContainer2, {
    type: 'bar',
    data,
    options: {
        indexAxis: 'y',
        scales: {
            x: {
                min: 0,
                max: 100,
                stacked: true
            },
            y: { // 此处从数组改为对象格式
                stacked: true
            }
        }
    }
});

验证效果

  • X轴会强制锁定0-100的范围,不受数据最大值影响
  • 横向条形图正常渲染,Y轴堆叠配置生效
  • 仅需确保页面正确引入Chart.js核心库即可,无需额外JS/SCSS文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:35:29