gpt4 book ai didi

javascript - DC.js - 空白数据点和直方图

转载 作者:行者123 更新时间:2023-11-30 15:31:44 24 4
gpt4 key购买 nike

我有一个包含 DC 行图和直方图(DC 条形图)的仪表板。我的数据集有 100 行和 10 个字段。六个字段具有全部 100 个数据点,而其他四个字段具有 95 个数据点和 5 个空白。我需要以一种对用户透明的方式在一个仪表板上显示所有字段。

对于行图表,我只是绘制空白并使用 .label() 属性将行名称设置为“未分配”,其中有空白。

对于直方图,我被卡住了。我想显示一个标记为“未分配”的列,以及直方图的正常线性列。也可以从直方图中隐藏空白行。

我无法过滤直方图背后的维度,因为这会从交叉过滤变量 facts 中删除行,这意味着我看不到包含它们的六个字段的那些行。

标准的假组不起作用,因为对于直方图,当我们到达组时,我们已经有了数字桶,所以不存在键为空白的

留给自己,DC 将空白解释为零并相应地对它们进行存储。我尝试限制维度,这是因为零桶减少了 5:

var dim = facts.dimension(function(d){ if (d[field]!='') { return Math.floor(+d[field]/binwidth)*binwidth; } });

但是这样做,5 行的计数只是随机(看起来)分布在其他桶中。当我点击行图上的“未分配”时,直方图随机显示 5 个桶,有时是两个桶,而我认为它们应该什么都不显示。

我可以数出空白行(并不总是 5 行),并想知道我是否可以通过一个假组从零 bin 中减去它。但我无法弄清楚如何添加键值对或调整 key=0 的现有值;

    var grp = dim.group().reduceCount();
var grp2 = {all: function() { return grp.top(Infinity); }};

我无法通过 print_filter 或 console.log 看到足够的结构来确定如何更改它。抱歉问题的长度。任何帮助表示赞赏!

艾玛

最佳答案

将它们放入单独的列中会很棘手,因为线性 x 标度不能很好地适应额外/NA/非数值。

我认为您必须切换到序数刻度才能将数字列和非数字列放在一起。有点乱,但可能。

让我们关注更简单的想法,只是跳过这些值。我认为您走在正确的轨道上。

问题是您的维度键函数并不总是返回一个值:

var dim = facts.dimension(function(d){
if (d[field]!='') {
return Math.floor(+d[field]/binwidth)*binwidth;
}
});

else 分支刚刚通过,JavaScript 函数的隐式返回值是 undefined。所以你最终得到了一些数字键,以及一些带有 undefined 键的行。我不确定 crossfilter 将如何处理这些行,但由于 documentation specifies that the key function must returned naturally-ordered values ,我猜它会感到困惑。

相反,也许让这个函数返回一个远远超出直方图范围的值?

var dim = facts.dimension(function(d){
if (d[field]!='') {
return Math.floor(+d[field]/binwidth)*binwidth;
}
else return -1000;
});

然后很容易创建一个fake group that screens out a particular value :

function remove_bins(source_group) { // (source_group, bins...}
var bins = Array.prototype.slice.call(arguments, 1);
return {
all:function () {
return source_group.all().filter(function(d) {
return bins.indexOf(d.key) === -1;
});
}
};
}
var grp = remove_bins(dim.group(), -1000);

关于javascript - DC.js - 空白数据点和直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42153965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com