2016-08-04 39 views
0

我有三個行圖,每當用戶第一次登錄頁面或單擊圖表的矩形條時,我的代碼就會計算並更新每個圖表的百分比。這是如何計算的百分比

posChart
%位置=每個位置獨特StoreNumber計數/獨特StoreNumber計數所有位置

deptChart
%部門=每個部門的職位數/位置計數各部門

狀態圖:每個國家/獨特StoreNumber計數
%美國=獨特StoreNumber計數所有國家

我想,當用戶點擊一個rowChart的矩形條,如「計數狀態」時,它應該更新/重新計算的百分比爲表(它不應該影響自己的百分比),然而,應爲其他兩個圖表重新計算百分比,即「按部門計算」和「按位置計算」。同樣的情況也適用於其他圖表。這就是我想

如果用戶點擊一個

防止圖形重新計算自己的百分比

  1. 「計算由部門」表 - >重新計算百分比「計算由位置」,「罪狀狀態」時的圖表

  2. 「計算由POSITION」圖表 - >重新計算百分比「COUNTS由分發者」和「計算由STATE」圖表

PLE幫助!
link:http://jsfiddle.net/mfi_login/z860sz69/

感謝您的答覆。 您提供的解決方案存在問題。我正在尋找所有過濾器的總計全球,但我不希望在用戶點擊當前圖表的矩形條時改變這些總數。
例如 如果存在具有相同StoreNumber(3)的兩個不同位置(主管,客戶經理),那麼我希望StoreNumber被計爲1而不是2

如果我們以賬戶經理%計算爲例(COUNTS BY POSITION圖表)

total unique StoreNumbers=3 
Total Account Manager POSITIONs=2 
% = 2/3=66% 

有沒有辦法重繪其他兩個圖表而不觸及當前的圖表?

回答

0

在我看來,你真正想要的是使用圖表組的總數,而不是總數。如果使用總體總數,則會觀察所有過濾器,但是如果使用當前組的總數,它將不會觀察當前圖表上的任何過濾器。

這會產生你想要的效果 - 這不是關於防止任何計算,而是關於確保每個圖表僅受其他圖表上的過濾器影響。

所以,與其bin_counter,讓我們定義sum_groupsum_group_xep

function sum_group(group, acc) { 
    acc = acc || function(kv) { return kv.value; }; 
    return d3.sum(group.all().filter(function(kv) { 
    return acc(kv) > 0; 
    }), acc); 
} 

function sum_group_xep(group) { 
    return sum_group(group, function(kv) { 
    return kv.value.exceptionCount; 
    }); 
} 

,我們將使用這些每個圖表,所以如:

posChart 
     .valueAccessor(function (d) { 
      //gets the total unique store numbers for selected filters     
      var value=sum_group_xep(posGrp) 
      var percent=value>0?(d.value.exceptionCount/value)*100:0     
      //this returns the x-axis percentages 
      return percent    
     }) 

    deptChart 
     .valueAccessor(function (d) { 
       total=sum_group(deptGrp) 
       var percent=d.value?(d.value/total)*100:0 
       return percent 
     }) 

    stateChart 
     .valueAccessor(function (d) { 
      var value=sum_group_xep(stateGrp); 
      return value>0?(d.value.exceptionCount/value)*100:0 
     }) 

...與其他一起這些地方使用了6個地方。沒有太多重複的代碼,可能有更好的方法來組織這個,但我沒有真正考慮它!

你撥弄叉:http://jsfiddle.net/gordonwoodhull/yggohcpv/8/

編輯:歸謬法可能有更好的快捷方式,但我認爲當前圖表的組中的總值的分裂,而不是使用其觀察一groupAll的原則所有過濾器,都是正確的開始。

+0

請參閱上面的答案,因爲我無法在此回覆您的帖子 –

+0

@FarahJaved,它看起來像有人刪除了你的答案,這是對這個答案的答覆。你應該真的編輯你的原始問題來解釋爲什麼這個答案不適合你。 – Gordon

+0

我會盡快編輯它。感謝提醒 –