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

C3图表设置标签Y轴位置:解决双列标签重叠问题

解决C3.js折线图标签重叠:固定系列标签位置

当然可以实现!要让Col1的标签始终在折线上方、Col2的标签始终在折线下方,我们可以借助C3.js标签的format函数,通过返回带样式的HTML文本,给不同系列的标签设置固定的垂直偏移,彻底避免重叠问题。

实现思路

C3.js的标签支持返回HTML元素,我们可以利用SVG的tspan标签的dy属性来控制标签的垂直位置:

  • 给Col1的标签设置负的dy值,让标签向上偏移,固定在折线上方
  • 给Col2的标签设置正的dy值,让标签向下偏移,固定在折线下方

修改后的完整代码

var chart1 = c3.generate({
    bindto: '#chart',
    data: {
        columns: [
            ['Col1', -0.7, -0.1, 4.6, -2.0, 4.2, 4.3, 5.4, 5.0, 0.6, 4.2, 4.9, 2.8, 2.7],
            ['Col2', -1.5, -0.9, 4.0, -2.5, 3.7, 4.0, 5.1, 4.8, 0.6, 4.2, 4.9, 2.8, 2.7]
        ],
        labels:{
            format: function(value, id, index) {
                // 根据系列ID设置不同的垂直偏移,数值可根据图表大小微调
                const offset = id === 'Col1' ? '-10' : '10';
                return `<tspan dy="${offset}">${value}%</tspan>`;
            }
        }
    },
    axis: {
        x: {
            type: 'category',
            categories: ['Feb-17', 'Mar-17', 'Apr-17', 'May-17', 'Jun-17', 'Jul-17', 'Aug-17', 'Sep-17', 'Oct-17', 'Nov-17', 'Dec-17', 'Jan-18', 'Feb-18']
        },
        y: {
            show: false,
            min: -8,
            max: 8
        },
    },
    grid: {
        y: {
            lines: [{ value: 0 }]
        }
    },
    size: {
        height: 240
    }
});

细节调整

如果标签的偏移距离不合适,可以修改offset的数值(比如改成-8或12),根据你的图表高度、字体大小来微调,直到视觉效果最佳。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:29:16