【问题标题】:dc.js use filter from other datasetdc.js 使用来自其他数据集的过滤器
【发布时间】:2016-01-11 17:31:26
【问题描述】:

当我在交叉过滤器中有多个数据集时遇到问题。 我为每个数据集创建一个交叉过滤器。 当我在气泡图中选择年份维度时,我想过滤饼图中的数据。它们来自不同的数据集,但它们都有 Year 列。

气泡图:

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

谁能告诉我如何在气泡图中选择年份,然后将其传递给饼图?

谢谢

【问题讨论】:

    标签: dc.js crossfilter


    【解决方案1】:

    如果他们使用通用的交叉过滤器会更好地工作,但您可能只需通过监听气泡图上的 filtered 事件并在它触发时过滤饼图来获得一些工作:

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

    这会删除饼图上的旧过滤器,应用新过滤器,然后重新绘制饼图交叉过滤器中的所有图表。

    文档:

    【讨论】:

    • 谢谢戈登。但我的问题是,在饼图中,我的维度不是年份。但是,它被称为义务维度。饼图显示了两种义务的比率。我想在气泡图中选择年份,然后根据我选择的年份更改饼图中的比率。我认为您的方法将过滤饼图的 yearDimension,但我根据义务维度按饼图的值分组。你能告诉我如何解决这个问题吗?
    • 好的,这不是您在代码中显示的内容。但我认为你需要做的就是在饼图的交叉过滤器上创建另一个维度,按年份,然后过滤它。如果这仍然不是您的意思,请编辑您的问题。
    • 谢谢戈登。我使用义务交叉过滤器中的年份维度来创建条形图并在条形图上进行过滤。然后饼图自动过滤。但它只能过滤一次。如果我想选择第二年或第三年,它就不能过滤了。比如我先选择2011年,如果我想看2009年、2010年和2011年的三年结果,图表不能过滤三年。它仍然是 2011 年的结果。
    • 好的,我已经更新了多选案例的代码。这是更通用的目的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    相关资源
    最近更新 更多