在饼图中显示百分比值

时间:2020-07-16 09:57:38

标签: dc.js

console.log(group1.top(Infinity));

给我:

0:
key: "M"
value: {Recovered: 122, Hospitalized: 38922, Deceased: 641, Migrated_Other: 1}
__proto__: Object
1:
key: "F"
value: {Recovered: 82, Hospitalized: 19215, Deceased:.....

在此代码中:

.label(function(d) {
                    return d.key+": " + (d.value[type]/<?> * 100).toFixed(2) + "%";
                })

如果typeRecovered,那么我希望恢复值的总和(122 + 82)代替<?>,即d.value["Recovered"]/(122+82)

我只是停留在语法上,如何用匹配类型的值的总和代替<?>。

我只能想到

group1.all()[0].value['Recovered']+group1.all()[1].value['Recovered']

还有什么更好的方法吗?

工作代码: https://blockbuilder.org/ninjakx/61d405cb0aaeda3be960e836f803cdd5

1 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点。一种是手动计算总和,如上所示,或者使用groupAll对象。

pie chart example使用的另一种方法是使用保存在饼图中的角度数据:

// workaround for #703: not enough data is accessible through .label() to display percentages
 .on('pretransition', function(chart) {
     chart.selectAll('text.pie-slice').text(function(d) {
         return d.data.key + ' ' + dc.utils.printSingleValue((d.endAngle - d.startAngle) / (2*Math.PI) * 100) + '%';
     })
 }); 

如前所述,没有足够的数据提供给.label()使用此方法,因此在绘制后使用完整的数据对象应用了该数据。