在 dc.js 中自定义 .y([yScale]) 方法

Customize .y([yScale]) method in dc.js

我正在尝试在 DC.js 中创建条形图。在这里,我减少了一个字段的平均值,并希望在 y 轴上显示它。我不知道该怎么做。有人可以帮我解决这个问题吗?

var dimByChannel = cf.dimension(function(d) { return d.channelUUID; });
var groupByChannel = dimByChannel.group().reduce(reduceAdd, reduceRemove, reduceInitial);

function reduceAdd(p, v) {
    p.bytesTxd = p.bytesTxd + v.bytesTxd;
    p.avg = (p.bytesTxd/total)*100;
    p.count = p.count + 1;
    return p;
}
function reduceRemove(p, v) {
    p.bytesTxd = p.bytesTxd - v.bytesTxd;
    p.avg = (p.bytesTxd/total)*100;
    p.count = p.count - 1;
    return p;
}
function reduceInitial() {
    return {
    bytesTxd: 0,
    avg: 0,
    count: 0
    };
}

我使用 reduceSum() 计算了 total。到现在为止一切都很好。现在如何在 y 轴上显示缩小的 avg

chanUtil
    .dimension(dimByChannel)
    .group(groupByChannel)
    .x(d3.scale.ordinal().domain(data.map(function (d) { return d.channelUUID; })))
    .xUnits(dc.units.ordinal)
    //.y(d3.scale.linear().domain(data.map(function (d) { return d.avg; })))
    .yAxisLabel("Utilization %");

是的,.y() 的名称相当具有欺骗性(或模糊):那个是用于比例尺的,它将图表坐标映射到物理坐标。

你要的是.valueAccessor():

.valueAccessor(function(d) { return d.value.avg; })