我遇到了一个涉及dc.js和crossfilter的独特问题。我有一些数据需要使用由dc.js提供支持的数字图表来显示。但是我找到了数字图表的最小文档,因此发布了我的查询。
Here is the JSFiddle for what i have conceptualized so far.
我基本上想要显示方框1中的唯一项目计数,在这种情况下为3,方框2中的唯一位数,在这种情况下为11,屏幕故障率为2/15 * 100即15.3%
目前我已经使用jquery使这个工作,但那只是一个黑客。我想基于交叉表聚合得到这些数字图表,以便我可以深入研究数据。
我遇到了减少计算计数的例子,但它们用于条形图,但在数字图表中我们需要有一个值访问器来显示数据。
有人可以帮帮我吗?
PS: 这是我写的jquery代码。不知道这是否有用。
$(document).ready(function() {
var baseURL = window.location.origin;
$.ajax({
url : baseURL + '/api/PlaceTable',
type : 'GET',
data : {},
async : true,
dataType : "json",
success : function(response) {
//Project Count
var projectIdCount = [];
for (i = 0; i < response.length; i++) {
if(response[i].Project != undefined){
if($.inArray(response[i].Project, projectIdCount) === -1){
projectIdCount.push(response[i].Project);
}
}
}
$('#number-box1').text(ProjectIdCount.length);
//Place Count
var placeIdCount = [];
for (i = 0; i < response.length; i++) {
if(response[i].Place != undefined){
if($.inArray(response[i].Place, placeIdCount) === -1){
placeIdCount.push(response[i].Place);
}
}
}
为了显示包含二进制值的列的运行总和,我使用了这个代码,它在数字图表中起作用:
numberChart
.valueAccessor(function(x){ return +flag.groupAll().reduceCount().reduceSum(function(d) { return d.Flag; }).value();})
.group(ndx.groupAll());
答案 0 :(得分:3)
故障百分比计算是一个单独的问题,我认为你已经在别处问过了。要获得唯一计数,可以很容易地创建一个“伪groupAll”,它返回其value方法中唯一键的数量。
我们还需要过滤掉空箱,因为crossfilter不会自动执行此操作。
function bin_counter(group) {
return {
value: function() {
return group.all().filter(function(kv) {
return kv.value > 0;
}).length;
}
};
}
var projectGroup = project.group();
projectCount
.valueAccessor(function(x){ return x;})
.group(bin_counter(projectGroup));
在这里更新了小提琴,仍然忽略了失败%部分: http://jsfiddle.net/gordonwoodhull/vct0dzou/1/