【问题标题】:Making DCJS histogram based on the calculated average根据计算的平均值制作 DCJS 直方图
【发布时间】:2016-09-22 12:00:22
【问题描述】:

我有一个长格式数据,如下所示。

year company value
2001 AAAAAAA 200
2002 AAAAAAA 300
2003 AAAAAAA 400
2001 BBBBBBB 150
2002 BBBBBBB 250
2000 CCCCCCC 500
2001 CCCCCCC 600
2002 CCCCCCC 550

是否可以通过每个company计算incomeaverage,然后在DC.js上通过计算average做直方图?

我首先做的是通过company 制作维度并计算平均值,然后尝试将average 制作为key

我遇到的问题是,如果您尝试从中制作直方图,则必须通过average 维度对其进行reduceCount。但当然average 不存在于crossfilter 对象上。

这是我的 jsfiddle 脚本。
http://jsfiddle.net/adamist521/n1383zdk/3/
图表的最终图像也包含在脚本中。

可能与这个有关,但不知道如何处理非整数平均值。
DC.js histogram of crossfilter dimension counts

【问题讨论】:

    标签: dc.js crossfilter


    【解决方案1】:

    要计算运行平均值(Crossfilter 是关于运行计算),您需要同时跟踪总和和计数。一旦你有了这些,计算平均值就很简单了。事实上,您根本不应该在 Crossfilter 中计算平均值,而只是跟踪组件。为此,您需要使用自定义组来跟踪同一组的计数和总和。

    Crossfilter 文档中有这样一个自定义组的示例:https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_order

    在您的 dc.js 图表中,您将定义一个 valueAccessor 来计算显示时的平均值:

    chart.
      ...
      .valueAccessor(function(d){ return d.value.total/d.value.count; })
    

    【讨论】:

    • key 是什么?我想按平均值制作直方图...例如。 X-Axis: average(450, 500, 550, ... ) , Y-Axis: count(10, 20, 30, ...)
    • 如果您想按每条记录的平均值制作直方图,请根据平均值创建一个维度(包括记录中的平均值或使用计算平均值的维度访问器)。跨度>
    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多