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

dc.js heatmap colour range not getting updated after filter applied

本文关键字:颜色 范围 更新 js 应用 过滤器 DC      更新时间:2023-09-26

我正在使用 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;
  });

我在这里缺少什么吗? 还是错误? 如果是这种情况,是否有任何解决方法?

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

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

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

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