将颜色分配给dc.js散点图会干扰图中的选择

时间:2015-03-09 14:22:02

标签: dc.js

我试图在几个图表中使用单个colorScale,包括散点图。正如这个小提琴所示,一切都正确显示:http://jsfiddle.net/za8ksj45/8/

Uncomment line 210 --> working selection but no colors.
comment line 210   --> colors but selection 'empties' other graphs.

然而,当我在最右边的散点图中选择点时,一切都被归零了。出。将第三个元素添加到维度时,事情就会出错。

此问题也在DC.JS google用户组中根据第三个变量' Color scatterplot' https://groups.google.com/forum/#!topic/dc-js-user-group/55nJcU0qDfg

我无法使用Gordon的.existenceAccessor函数来使用它。任何有助于颜色和选择的帮助都将非常感激。

谢谢, --Nico

1 个答案:

答案 0 :(得分:2)

颜色在逻辑上不是密钥的一部分。你真的想减少这里的两个值,计数和颜色。这需要自定义缩减功能(或reductio可能会使其更容易)。

您可以从您为bin看到的第一个值中获取颜色。据推测,无论如何每个bin只有一个值,这对于crossfilter中的散点图总是一件奇怪的事。

这种自定义缩减似乎有效(有点hacky):

var scatterGroupDate = scatterDimensionDate.group().reduce(
    function (p, v) {
        p.count = p.count ? p.count + v.setupTime : 1;
        p.color = v.recipe;
        return p;
    },
    function (p, v) {
        p.count -= v.setupTime;
        return p;
    },
    function () { return {}; }
    );

使用colorAccessor

.colorAccessor(function (d) {
    return d.value.color;
})

和presenceAccessor

.existenceAccessor(function(d) { return d.value.count; })

分叉小提琴:http://jsfiddle.net/gordonwoodhull/za8ksj45/11/