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

C3.js(v4)柱状图实现重叠显示的代码修改咨询

实现C3.js柱状图的重叠效果(而非堆叠)

我明白你的需求——你想要让「总人数」柱子作为底层,「通过人数」柱子重叠在上方,这样未通过的部分(总人数-通过人数)就能直观显示出来,而不是默认的堆叠相加。

要实现这个效果,我们需要调整C3.js的配置,核心是取消堆叠分组,并控制柱子的绘制顺序和对齐方式,具体步骤如下:


关键修改点

  • 移除堆叠分组配置:原来的groups选项会让同组的柱子堆叠起来,我们需要删掉它,让同一x轴位置的柱子自然重叠。
  • 调整数据系列顺序:把「Total」系列放在「Passed」系列前面,这样C3会先绘制总人数柱子(底层),再绘制通过人数柱子(上层)。
  • 设置柱子居中对齐:确保同一x位置的柱子完全重叠,而不是并排。
  • 优化柱子宽度与颜色:调整宽度让重叠效果更清晰,用颜色区分层级,方便识别未通过部分。

修改后的完整代码

<div id="chart3"></div>
<script>
var chart = c3.generate({
    bindto: '#chart3',
    data: {
        url: '../static/CSV/Chart_data/number_students.csv',
        x: 'AC_YEAR',
        type: 'bar',
        // 手动指定系列顺序,确保Total系列先绘制(底层)
        order: ['Total women', 'Total men', 'Passed women', 'Passed men'],
        colors: {
            'Total women': '#7cb342', // 绿色(未通过部分显示此颜色)
            'Passed women': '#f8bbd0', // 浅粉色(通过部分)
            'Total men': '#1e88e5', // 蓝色
            'Passed men': '#bbdefb' // 浅蓝色
        }
    },
    axis: {
        y: {
            label: { text:"Number of students", position: "outer-middle" },
        },
        x: {
            label: { text:"Year", position: "outer-center" },
        }
    },
    size: { height: 400, width: 800 },
    bar:{
        width:{ratio:0.7},
        align: 'center' // 确保同一x位置的柱子居中重叠
    },
    legend: {
        show: true,
        position: 'inset',
        inset: { anchor: 'top-right', x: 10, y: 5, step: 2 }
    }
});
</script>

配套CSV调整(可选)

如果不想在代码里指定order,可以调整你的CSV列顺序,把Total系列放在前面,这样C3会自动按顺序绘制:

AC_YEAR,Total women,Total men,Passed women,Passed men
2010,98,315,72,239
2011,83,276,77,227
2012,93,298,65,226
2013,77,283,54,215
2014,88,294,63,233
2015,64,267,49,205

效果说明

  • 总人数柱子(绿色/蓝色)会先绘制,作为底层;
  • 通过人数柱子(浅粉/浅蓝)重叠在上方,覆盖对应高度;
  • 未通过的人数就是底层柱子露出的部分(比如2010年女生的绿色部分就是98-72=26);
  • 柱子居中对齐后,同一年份的男女柱子会各自重叠,不会互相干扰。

这样就能完美实现你想要的「总人数为底,通过人数重叠在上」的效果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:52:38