2017-05-10 2 views
1

나는 각 막대의 합계 값을 표시하고자하는 Plunkr을 만들었습니다. 현재 막대의 각 조각의 총 누적 값을 표시합니다. 검은 색 텍스트)와 끝에있는 전체 값을 표시하기 때문에 각 막대 끝에 표시된 총 값만 표시하려고합니다.d3js에 누적 막 대형 차트의 총계 값을 표시하는 방법

나는 여기에서

.text(function(d) { 
       if (d["x1_"+TEAM] != maxValue){ 
        "display", "none"; 
        } else { return formatText(d["x1_"+TEAM]) 
        } 
       }); 

을 내 시도를 주석 처리했습니다하지만 maxValue의 최대 값은 물론 결합 된 모든 바의 최대 값입니다.

비슷한 해결책이 있습니까? 아니면 완전히 새로운 기능으로 데이터를 정렬해야합니까?

도움을 주시면 감사하겠습니다.

+1

이게 원하는가요? https://plnkr.co/edit/iovKsrx0Eg4pTUWTDUaA?p=preview –

+0

예! 고맙습니다. –

답변

1

누적 막대의 합계로 선택을 만드는 쉽고 좋은 방법이 있습니다. 여기

.text(function(d, i) { 
    if (i === textOnBar4.data().length - 1) return formatText(d["x1_" + TEAM]) 
}); 

: 당신이 매직 넘버없이 수행하려는 경우,

.text(function(d, i) { 
    if (i === 2) return formatText(d["x1_" + TEAM]) 
}); 

또는 그러나, 코드를 사용하고 가능한 최소 변경 사항을 적용, 단지 각 누적 막대의 제 3 목적을 보여 업데이트 된 덩어리입니다 : https://plnkr.co/edit/iovKsrx0Eg4pTUWTDUaA?p=preview

+0

감사합니다. 매우 유용합니다! –

+0

업데이트 섹션에 동일한 텍스트 함수를 넣으면 첫 번째 (또는 세 번째) 객체 만 업데이트됩니다. (매우 가난한) 해결책은 다음과 같습니다. '.text (function (d, i) {if (i === 2 || i === 5 || i == 8 || i == = 11) return formatText (d [ "x1 _"+ TEAM])})'좀 더 세련된 해결책을 알고 있습니까? 아니면 너무 많이 요구하고 있습니까? –

+1

그 이유는 내 대답에 이렇게하는 더 좋은 방법이 있다고 말한 이유입니다. 중첩 된 데이터를 기반으로 간단한 선택을 만들 것입니다. –

관련 문제