2017-04-19 9 views
1

지도가 표시되어 있으며 선택한 상태의 모든 선거인 투표를 합산하여 숫자로 표시하고 싶습니다. 이전 스레드에서 내 그룹을 최상위 메서드로 개체를 래핑하도록 조언을 받았습니다. 나는 지금까지 내가 가지고,이 작업을 수행하는 방법을 잘 모르겠어요 :상위 방법으로 그룹을 감싸는 방법

var stateDim4 = ndx.dimension(function(d) { return d.state; }), 
     group = stateDim4.group().reduceSum(function(d) {return d.elecVote }), 
     count = group.top(51); 
    count[0].key; 
    count[0].value; 

누군가가이 작업을 수행하는 방법에 대한 좀 도와 주 시겠어요? 이전 스레드 : Summing a column and displaying percentage in a number chart

답변

2

위의 예에서 작성한 것은 여기에 선택된 상태의 모든 선거인 투표를 요약 한 top 방법을 사용하는 가짜 그룹입니다. 여기

var fakeGroup = { 
    top: function() { 
    return [ 
     grp2.top(Infinity).reduce(function(a,b) { 
     if(b.value > 0) { 
      a.value += elecVotesMap.get(b.key) 
     } 
     return a 
     }, { 
     key: "", 
     value: 0 
     }) 
    ] 
    } 
} 


percentElec 
    .group(fakeGroup) 
    .formatNumber(d3.format("d")) 

는 작업 JSFiddle입니다 : https://jsfiddle.net/esjewett/u9dq33v2/2/ 거기 dc.js FAQ 다른 가짜 그룹 예제의 무리,하지만 난 그들 중 하나가 당신이 원하는 무엇을 정확하게 생각하지 않는다

.

+0

감사합니다.이 오류는 group.all이 number-display.js의 함수가 아닙니다. –

+0

이전 버전의 dc.js를 실행하고 있습니까? 이것은 2.1 dev 브랜치에서 돌아가고 있으며,'all' 대신에'top'을 사용할 것입니다. 예제에서'top'을'all'으로 바꾸십시오. 어쩌면? –

+0

dc.js 2.0. * 또는 그 이전 버전을 사용하는 경우 [.top() 및 .all()'] (https://github.com/dc-js/dc)가 필요할 것입니다. .js/wiki/FAQ # -but-i-need-top). 2.1. *을 실행한다면'.all()'만 필요합니다. ('chart.ordering'을 설정할 필요가 있습니다.) (http://dc-js.github.io/dc.js/docs/html /dc.baseMixin.html#ordering__anchor)). – Gordon