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

如何让多数据集的Chart.js水平条形图实现居中对齐?

解决水平条形图多数据集错位对齐问题

你的水平条形图中两个数据集分别集中在不同的Y轴标签组,导致单个标签下的条形上下偏移并重叠,要实现所有条形与标签居中对齐,只需在图表配置中添加Y轴的条形布局控制参数:

修改后的图表配置代码:

const chartLoc = document.getElementById('chart').getContext('2d');
chart = new Chart(chartLoc, {
    type:'bar',
    data: jsonvar,
    options: {
        indexAxis: 'y',  
        layout: {
            padding: {
                right: 100
            }
        },
        scales: {
            y: {
                barPercentage: 0.6, // 控制条形占标签高度的比例,小于1时会留出上下空白实现居中
                categoryPercentage: 1 // 让标签组之间无额外间距,保持紧凑
                // 若需要固定条形厚度,可替换上面两个参数为:
                // barThickness: 25,
            }
        },
        plugins: {
            datalabels: {
                labels: {
                    label: {
                        anchor: "end",
                        align: "end",
                        clip: false,
                    }
                }
            }
        }
    },
    plugins: [ChartDataLabels],
});

数据结构保持不变:

const jsonvar = {
    "labels":["Label 1","Label 2","Label 3","Label 4","Label 5","Label 6"],
    "datasets":[
        {
            "label":"Version 1",
            "data":[null,null,null,1,2,3]},
        {
            "label":"Version 2",    
            "data":[1,2,3,null,null,null]
        }
    ]
}

原理说明:

  • barPercentage设置条形在对应Y轴标签高度内的占比,当值小于1时,剩余空间会均匀分配在条形上下,自然实现居中对齐;
  • categoryPercentage设为1可以消除标签组之间的额外间距,避免布局松散;
  • 若需要固定条形厚度,直接使用barThickness参数定义具体像素值,效果更可控。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:12:39