C3js堆积条形图与隐藏栏

时间:2017-01-20 09:52:29

标签: javascript d3.js c3.js

场景:我需要显示有关付款详细信息的条形图,客户使用卡,支票或现金为产品支付的费用。并且还需要在堆积条形图中显示总值。

var chart = c3.generate({
    data: {
        columns: [
            ['Cash', 30, 200, 100, 400, 150, 250],
            ['Card', 130, 100, 140, 200, 150, 50],
            ['Total', 160,300,240,600,300,300]
        ],
        groups:[['Cash','Card']],
        type: 'bar'
    }
});

输出

enter image description here

我需要显示总值,但不显示条形图和图例。怎么办呢?任何意见将是有益的。谢谢。

1 个答案:

答案 0 :(得分:1)

您不需要总数据集,您可以更改工具提示内容以便动态计算(使用此处答案中的技术 - > https://confluence.atlassian.com/bamboo/linking-to-another-application-360677713.html

var chart = c3.generate({
    data: {
        columns: [
            ['Cash', 30, 200, 100, 400, 150, 250],
            ['Card', 130, 100, 140, 200, 150, 50],
        ],
        groups:[['Cash','Card']],
        type: 'bar'
    }, 
    tooltip : {
        contents: function (d, defaultTitleFormat, defaultValueFormat, color) {
            var total = d.reduce (function(subTotal,b) { return subTotal + b.value; }, 0);
            d.push ({value: total, id: "Total", name: "Total", x:d[0].x , index:d[0].index});
            return this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color);
        }
    }
});

使用.reduce计算总值,以汇总该点的所有其他值。然后为工具提示创建一个名为' Total'的新数据点。使用该值并将其传递给绘图的默认渲染器(this.getTooltipContent)

https://stackoverflow.com/a/36789099/368214