我正在尝试显示6系列的详细数据。示例http://dc-js.github.io/dc.js/examples/scatter-series.html正是我所需要的,但我需要进行一些小调整。我想展示三个图表,每个图表有两个项目。
我可以使用示例中的单个runGroup,但不知何故限制chart.seriesAccessor()在一个图表中显示两个特定的系列。 然后在第二个图表中使用相同的runGroup并将其.seriesAccessor()更改为使用两个不同的系列等等。
设置多个单独的dims和组工作正常,但是当我已经有一个包含其中所有内容的单个交叉滤波数据集时,我不能仅使用该单个维度和组来驱动不同的图表,这似乎有点过分了。
(数据集实际上有40个系列,但是现在我只需要显示特定的数据,在几个图表中组合在一起)。
答案 0 :(得分:1)
这就是Tufte称之为"小倍数"。我不确定您是否可以通过添加维度和组来实际执行此操作,因为您不希望图表受到彼此影响。选择系列过滤器。
而seriesAccessor
只是一个提取子密钥的函数,它实际上没有办法过滤。
看起来是"fake groups"的又一个案例。修改分散系列示例:
function filter_keys(source_group, f) {
return {
all:function () {
return source_group.all().filter(function(d) {
return f(d.key);
});
}
};
}
// in particular, take experiments 1 and 2 from scatter-series.html:
var frunGroup = filter_keys(runGroup, function(k) {
return k[0] < 3; // k[0] is the same part used for seriesAccessor
});
chart.group(frunGroup)
然后,您将为多个中的每个图表定义其中一个过滤组(或在循环中定义它们)。每当交叉过滤器发生变化时,每个图表对组进行一次过滤的成本很小,但这应该可以忽略不计。
将seriesChart概括为处理这类事情会很好,但它本质上是相同的计算/后过滤,所以我倾向于认为我们需要的是更好的数据操作/过滤工具crossfilter和dc.js,内置的功能不多。