2017-01-11 84 views
1

我对c3.js中的饼图有疑问。c3.js饼图标题总计数

如何在标题中添加饼图的总数?

\t \t var title = new Array('data1.sql','data2.sql') 
 
\t \t var dtitle = new Array('title1','title2') 
 
\t \t var chart = new Array('chart0', 'chart1') 
 
\t \t for(var i = 0; i < title.length; i++){ 
 
\t \t \t \t chart[i] = c3.generate({ 
 
\t \t \t \t bindto : '#chart' + i, 
 
\t \t \t \t size: { 
 
\t \t \t   height: 550, 
 
\t \t \t   width: 800 
 
\t \t \t  }, 
 
\t \t \t \t data : { 
 
\t \t \t \t \t url : '/json/sql/data/test/' + title[i], 
 
\t \t \t \t \t mimeType : 'json', 
 
\t \t \t \t \t type : 'donut' 
 
\t \t \t \t }, 
 
\t \t \t \t donut: { 
 
\t \t \t \t \t title: dtitle[i] + ' - Total:' , 
 
\t \t \t \t \t label: { 
 
\t \t \t \t \t \t format: function(value, ratio, id) { 
 
\t \t \t \t \t \t \t return value; 
 
\t \t \t \t \t \t } 
 
\t \t \t \t \t } 
 
\t \t \t \t } 
 
\t \t \t }); 
 
\t \t }

回答

0

这里的讨厌的一点就是标题选项可以利用的功能,但图表变量并不在它初始化所以使用C3 API方法不能在这一点上做。

所以最好的(也许只)的办法就是添加一个onrendered回调加起来的数据,你就需要使用D3的点,反正,然后替换图表标题文本的文本:

onrendered: function() { 
    var data = this.api.data(); 
    var total = data.reduce (function (subtotal, t) { 
     return subtotal + t.values.reduce (function (subsubtotal,b) { return subsubtotal + b.value; }, 0); 
    }, 0); 
    d3.select(this.config.bindto + " .c3-chart-arcs-title").text("Total: "+total); 
} 

编辑:如果你想让它跟踪共为您隐藏/显示系列使用

var data = this.api.data.shown.call (this.api); 

,而不是

var data = this.api.data(); 
+0

比k你为这个代码。 –

+0

嘿,我还有一个问题。如果我禁用饼图的一部分,如何更新总数? –

+0

看到编辑回答以上 – mgraham