dc.js - 需要定制reducer来扣除两个值

标签 dc.js crossfilter

"Date(UTC)","Market","Type","Price","Amount","Total","Fee","Fee Coin"
12:18:07","ETCBTC","BUY","0.002064","1.05","0.00216720","0.00105","ETC"
"2018-05-26 06:01:12","ETCBTC","SELL","0.00207","5.86","0.01213020","0.00001213","BTC"
"2018-05-25 22:47:14","ETCBTC","BUY","0.002","1.32","0.00264000","0.00132","ETC"

这是我的数据集的一部分。问题是,在我的数据集中,我需要使用的“总计”只是数字 - 为了使它们发挥作用,我必须将它们与“类型”(买入/卖出)连接起来。

买入应类似于“-”,卖出应类似于“+”;它们之间的区别在于我需要显示什么。

我只是在学习。所以我没有尝试很多。

function show_profit(ndx) {
var typeDim = ndx.dimension(dc.pluck("Type"));
var profit = typeDim.group().reduce(
    function (p, v) {
        p.count++;
        p.total += v.Total;
        return p;
    },
    function (p, v) {
        p.count--;
        p.total -= v.Total;
        return p;
    },
    function () {
        return { count:0, total: 0};
    }
);

dc.barChart("#profit")
    .width(500)
    .height(300)
    .dimension(typeDim)
    .group(profit)
    .valueAccessor(function (d) {
        if (d.value.count == 0) {
            return 0;
        } else {
            return d.value.total;
        }
    })
    .transitionDuration(500)
    .x(d3.scale.ordinal())
    .xUnits(dc.units.ordinal)
    .elasticY(true)
    .xAxisLabel("Type")
    .yAxisLabel("Amount")
    .yAxis().ticks(20);
}

我刚刚制作了每个买入和卖出交易量的图表。 我的目标是找到买入和卖出之间的差异并将其显示在折线图中。

最佳答案

我不确定我是否完全理解您的问题,但如果您只想将“卖出”应用为正数,将“买入”应用为负数,您应该能够将这些值乘以 1-1 在你的归约函数中:

function mult(type) {
    switch(type) {
    case 'SELL': return 1;
    case 'BUY': return -1;
    default: throw new Error('unknown Type ' + type);
} 
var profit = typeDim.group().reduce(
    function (p, v) {
        p.count++;
        p.total += mult(v.Type) * v.Total;
        return p;
    },
    function (p, v) {
        p.count--;
        p.total -= mult(v.Type) * v.Total;
        return p;
    },
    function () {
        return { count:0, total: 0};
    }
);

关于dc.js - 需要定制reducer来扣除两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54183281/

相关文章:

javascript - DC.js 条形图 x 轴标签未与条对齐

d3.js - 使用 dc 或 d3.js 中具有正负 y 轴的面积图制作图表

d3.js - DC.js 折线图 - 没有显示折线

dc.js - 直流综合图

d3.js - 如何将默认值设置为 dc selectMenu

javascript - 通过 Crossfilter 使用日期作为过滤器

javascript - 如何使用 aoColumns 添加或注入(inject)列到 jQuery 数据表?

javascript - 向 d3 条形图添加标签

dc.js - 使用 dc.js 和 crossfilter 的面积图

javascript - 使用 DC.js(crossfilter 和 d3 便利库)时出现问题 - 条形图不显示值