2016-11-30 53 views
1

我正在使用多个图表的交叉过滤器与dc.js的组合。dc.js x轴不刷新

使用环状图进行过滤时,线图中的数据会消失,但x轴保持不变并且不会刷新。

var tempLineChartt1 = dc.lineChart("#chart-line-temp-t1"); 

    tempLineChartt1 
     .width(768) 
     .height(480) 
     .elasticX(true) 
     .x(d3.time.scale().domain([dateDim.bottom(1)[0].dd,dateDim.top(1)[0].dd])) 
     .elasticX(true) 
     .dimension(dateDim) 
     .group(iotmPerDate) 
     .renderArea(true) 
     .brushOn(false) 
     .renderDataPoints(true) 
     .clipPadding(10) 
     .yAxisLabel("T1") 

回答

0

我知道这已经被回答了几次,但我在快速搜索中找不到对此的引用。

大多数情况下,您指的是垃圾箱不会自动从交叉过滤组中移除的事实。因此,dc.js认为没有理由更改X域 - elasticX(true)只会在X键组发生更改时触发,此处Y值只会降至零。

您可以使用“假组”过滤掉这些结果动态:

function remove_empty_bins(source_group) { 
    return { 
     all:function() { 
      return source_group.all().filter(function(d) { 
       return d.value != 0; 
      }); 
     } 
    }; 
} 

var filtered_group = remove_empty_bins(group) // or filter_bins, or whatever 

chart.dimension(dim) 
    .group(filtered_group) 

https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups

有了这个地方,将线路图将被重新绘制时间,假组将筛选出数据被读取时为零。然后折线图将重新计算域并缩放以适合。

+0

也许这个问题被回答了很多次,但我搜索了这个解决方案的日子。非常感谢你,非常感谢! – joshuatree69