【问题标题】:dc.js heatmap colour range not getting updated after filter applied应用过滤器后 dc.js 热图颜色范围未更新
【发布时间】:2016-03-16 14:37:33
【问题描述】:

我正在使用 dc.js 创建仪表板,数据集包含 24 小时内 1 年的 3 种类型的读数。 (在示例小提琴中,我仅将 15 天用于演示目的)

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

我使用了一个行图来显示每次读数的总和,并使用热图来显示每天每个时间的总读数。

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

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;
  });

这里有什么我遗漏的吗?或者它是一个错误?如果是这种情况,有什么解决方法吗?

【问题讨论】:

    标签: javascript d3.js dc.js crossfilter


    【解决方案1】:

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

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

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

    你的小提琴的工作分支:http://jsfiddle.net/gordonwoodhull/w1mzwv8d/2/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2017-03-27
      • 1970-01-01
      相关资源
      最近更新 更多