dc.js - dc.js 按行值过滤
问题描述
我有一个类似于下面的数据集:
我想在“火车运输”上找到“海运”的总量,并用 dc.numberDisplay("#");
海运总量/火车总量
不确定我是否需要使用自定义减少。
到目前为止,我使用了下面的代码,但它返回 1
ndx = crossfilter(data);
var all = ndx.groupAll();
var allGroup = all.reduce(
function (p, v) {
p.total += v.total;
p.sea = (v.shipment_type === "sea") ? 0 : p.total ;
p.train = (v.shipment_type === "train") ? 0 : p.total ;
p.air = (v.shipment_type === "air") ?0 : p.total ;
p.sea_over_train = p.sea / p.train;
return p;
},
function (p, v) {
p.total -= v.total;
p.sea = (v.shipment_type === "sea") ? 0 : p.total ;
p.train = (v.shipment_type === "train") ? 0 : p.total ;
p.air = (v.shipment_type === "air") ?0 : p.total ;
p.sea_over_train = p.sea / p.train;
return p;
},
function () {
return {
total: 0,
sea: 0,
train :0,
air:0,
sea_over_train:0,
};
}
);
seaOverTrain
.group(allGroup)
.valueAccessor(function (x) { return x.sea_over_train; })
.formatNumber(d3.format(".3s"));
解决方案
我认为你在正确的轨道上但是
- 你的
?:
s 可能颠倒了 - 您可能需要计算每个类别的总数,并且
- 不使用总和
我们以这一行为例:
p.sea = (v.shipment_type === "sea") ? 0 : p.total ;
如果是,这将设置p.sea
为 0 ,否则将设置为。您可能希望反过来。shipment_type
"sea"
p.total
另外,我认为您的意图是保持海运、火车和空运的总量,因此您可以使用+=
and 和-=
来v.total
做到这一点。
目前,这些变量将从中获取总和p.total
(这可能是您得到 1 的原因……不确定……)
将这些想法放在一起,我们得到:
function (p, v) {
p.total += v.total;
p.sea += (v.shipment_type === "sea") ? v.total : 0 ;
p.train += (v.shipment_type === "train") ? v.total : 0 ;
p.air += (v.shipment_type === "air") ? v.total : 0 ;
p.sea_over_train = p.sea / p.train;
return p;
},
function (p, v) {
p.total -= v.total;
p.sea -= (v.shipment_type === "sea") ? v.total : 0 ;
p.train -= (v.shipment_type === "train") ? v.total : 0 ;
p.air -= (v.shipment_type === "air") ? v.total : 0 ;
p.sea_over_train = p.sea / p.train;
return p;
},
推荐阅读
- html - 如何改进在请求期间显示微调器的叠加层和模式?
- django - Django 2.1.7 - “TemplateDoesNotExist at /munichlivingapp/seekers/
- tensorflow - 简单分类器形状输入中的张量流误差
- android - 第三方 cookie 不起作用,我已经尝试过 - CookieManager.getInstance().acceptThirdPartyCookies();
- apache-nifi - 当多个 nifi 应用程序正在运行时,如何从特定于我的应用程序的 nifi 日志中捕获错误
- asynchronous - 超过承诺的渠道。为什么以及如何使用?
- reactjs - Redux-Saga 在 componentDidMount() 上未定义
- php - 覆盖 JMS 序列化器全局 camelCase
- excel - 使用 vba 在网页文本框中添加值
- node.js - 托管 Node.js 机器人(express 和 botkit)