【问题标题】:Crossfilter filters not filtering (dc.js)Crossfilter 过滤器不过滤 (dc.js)
【发布时间】:2014-08-02 00:38:04
【问题描述】:

我正在尝试在交叉过滤器中使用过滤器,但是不行。

Here's the JSBin

这是最相关的代码:

var userDimension = data.dimension(function(d) {return d.user;}).filter(['John', 'Paul']);
var totalSalesByUser = userDimension.group();
var pieChartUserSales = dc.pieChart("#pie-chart-sales-by-user");
pieChartUserSales
  .width(150).height(150)
  .dimension(userDimension)
  .group(totalSalesByUser); 

dc.renderAll();

饼图在使用和不使用过滤器的情况下看起来都一样,但我正在寻找的效果是将其缩小到 John 或 Paul 是用户的项目。

【问题讨论】:

    标签: javascript d3.js pie-chart dc.js crossfilter


    【解决方案1】:

    事实证明,crossfilter 不会将过滤器应用于您放置过滤器的维度。它将它应用于一切 else

    经过长时间的思考,这是有道理的。

    【讨论】:

    • 是的。不直观,但这正是过滤协调视图的正确设计决策。
    • @Jeffrey 你能详细解释一下吗?
    • 发表评论后,我查看了自己的图表(包含交叉过滤器对象)。它确实有一些意义,例如我有一个图表 A 显示 2017 年每个月的图书销售数量(使用时间维度然后分组),第二个图表 B 显示不同书籍的总销售额。假设现在我想知道某个月份之间的总销售额,然后我过滤时间维度。 B 会相应地改变,但 A 不一定需要改变(因为所有信息都已经存在)。但如果我需要让图表更漂亮、更清晰,那么将创建一个时间维度副本进行过滤。
    【解决方案2】:

    交叉过滤器过滤器不适用于在与过滤器相同的维度上定义的组。创建第二个维度并对其进行过滤。

    这是一个更新的示例。另请注意,您定义的过滤器并没有按照您的意思执行,因此我将其更改为仅过滤 Paul 和 John 的函数:http://jsbin.com/yugakire/1/edit

    【讨论】:

    • 感谢更新的 jsbin,很好地解决了我的问题。
    猜你喜欢
    • 2015-12-21
    • 2013-07-14
    • 2015-11-15
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多