2016-03-16 38 views
1

我使用dc.js创建仪表板,数据集包含3种类型的读数,以24小时为基础从1年开始。 (在本例中小提琴,我只用短短15天为示范的目的)dc.js在应用过滤器后,热图颜色范围没有得到更新

这里是链接到的jsfiddle以更好地说明我的问题http://jsfiddle.net/table315/hLzLzhss/

我用一排图表显示总的每阅读以及热图来显示每次每天的总读数。

当从行图中选择1种读数类型时,热图似乎不会重新计算颜色域的最小值和最大值。 (一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; 
    }); 

有我丢失的东西吗?或者它是一个错误?如果是这种情况,是否有任何解决方法?

回答

0

这是通过设计,因为颜色映射可能有一些绝对的含义。

因此,如果你希望域调整并显示全范围的颜色为每个新的设定值,则需要calculateColorDomain()每个图表重绘时间:

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

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