2015-10-13 62 views
0

当我在crossfilter中有多个数据集时遇到问题。 我为每个数据集创建一个交叉过滤器。 我想在饼图中筛选我的数据,当我在气泡图中选择年份维度时。它们来自不同的数据集,但都有年份栏。dc.js使用来自其他数据集的过滤器

气泡图:

var ndx = crossfilter(data); 
var yearDimension = ndx.dimension(function (d) { return d.FiscalYear; }); 
var yearlyPerformanceGroup = yearDimension.group().reduceSum(return d.Value); 

饼图

var ndxobi = crossfilter(obligation); 
var yearDimension = ndxobi.dimension(function (d) { return d.FiscalYear; }); 
var obligationDimension = ndxobi.dimension(function (d) { return d.Type; }); 
var valueObligationSumGroup = obligationDimension.group().reduceSum(function (d) { return d.Value; }); 

能有一个人告诉我如何选择气泡图的一年,然后把它传递给饼图?

谢谢

回答

0

这是要更好地工作,如果他们使用共同的crossfilter,但你也许可以得到的东西只是听气泡图上filtered事件和过滤饼图火灾时的工作:

bubbleChart.on('filtered', function(chart) { 
    pieChart.filter(null) 
     .filter([chart.filters()]) 
     .redrawGroup(); 
}); 

这消除了饼图上旧的过滤器,应用新的一个,然后促使所有图表在饼图的crossfilter重绘。

文档:

+0

谢谢戈登。但我的问题是,在饼图中,我的维度不是Year。但是,它被称为义务维度。饼图显示了两种义务的比例。我想在泡泡图中选择年份,然后根据我选择的年份更改Piechart中的比例。我认为你的方法会过滤年度的饼图,但是我会根据义务维度对饼图的价值进行分组。你能告诉我如何解决这个问题吗? –

+0

好的,那不是你在代码中显示的。但我认为你所需要做的就是在饼图的crossfilter上创建另一个维度,然后过滤它。如果这仍不是你的意思,请编辑你的问题。 – Gordon

+0

谢谢戈登。我在义务交叉过滤器中使用年份维度在条形图上创建条形图和过滤器。然后饼图自动过滤。但它只能过滤一次。如果我想选择第二年或第三年,则无法过滤。例如,我首先选择2011年,如果我想看看2009年,2010年和2011年的三年结果,图表不能过滤三年。它仍然是2011年的结果。 –

相关问题