应用过滤器后,dc.js热图颜色范围未更新

时间:2016-03-16 14:37:33

标签: javascript d3.js dc.js crossfilter

我正在使用dc.js创建仪表板,数据集包含3种类型的阅读,从1年24小时开始。 (在示例中,我仅使用15天进行演示)

这是指向JSFiddle的链接,以更好地说明我的问题http://jsfiddle.net/table315/hLzLzhss/

我使用行图来显示每个读数的总和,以及一个热图,以显示每次每天的总读数。

当选择了行图中的1种类型的读数时,热图似乎不会重新计算颜色域的最小值和最大值。 (热盒显示浅色,即使该值在当前过滤的数据集中最高。)

dayAndTimeChart
  .width(30 * 24 + 500)
  .height(20 * 31)
  .dimension(dayAndTimeDimension)
  .group(dayAndTimeGroup)
  .keyAccessor(function(d) {
    return d.key[0];
  })
  .valueAccessor(function(d) {
    return d.key[1];
  })
  .colorAccessor(function(d) {
    return d.value;
  })
  .colors(["#fff7ec", "#fee8c8", "#fdd49e", "#fdbb84", "#fc8d59", "#ef6548", "#d7301f", "#b30000", "#7f0000"])
  .calculateColorDomain()
  .title(function(d) {
    return "Time:   " + d.key[0] + "\n" +
      "Day:  " + d.key[1] + "\n" +
      "value: " + d.value;
  });

这里有什么我想念的吗?还是一个bug?如果是这种情况,有没有解决办法?

1 个答案:

答案 0 :(得分:0)

这是设计使然,因为颜色映射可能有一些绝对意义。

因此,如果您希望域调整并显示每组新值的全部颜色范围,则每次重绘图表时都需要calculateColorDomain()

.on('preRedraw', function() {
    dayAndTimeChart.calculateColorDomain();
})

小提琴的工作叉:http://jsfiddle.net/gordonwoodhull/w1mzwv8d/2/