2016-05-25 49 views
2

我有一個如下所示的長格式數據。根據計算的平均值製作DCJS直方圖

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

問題我面臨的是,如果你試圖使直方圖超出,你必須reduceCount它由average尺寸。但當然crossfilter對象上不存在average

這是我的jsfiddle腳本。
http://jsfiddle.net/adamist521/n1383zdk/3/
該圖的最終圖像也包含在腳本中。

可能與此有關,但無法弄清楚如何處理非整數平均值。
DC.js histogram of crossfilter dimension counts

回答

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

'key'會是什麼?我想平均直方圖... 前。 X軸:平均值(450,500,550,...),Y軸:計數(10,20,30,...) – adamist521

+1

如果您想在每條記錄上平均製作直方圖,則創建一個維度基於平均值(包括記錄中的平均值或使用計算平均值的維度訪問器)。 –