2014-03-06 1 views
0

D3.JS를 사용하여 사용자가 목록에서 변수의 수를 선택하여 대시 보드를 만들 수 있습니다. 사용자가 하나 또는 두 개의 변수를 선택하면 영역 차트를 만들려고합니다. 사용자가 두 개 이상의 변수를 선택하면 영역 차트 (예 : 꺾은 선형 차트)의 가장자리 만 만들고 싶습니다. 선 차트를 작성하는 코드에서 변경이 필요 없다는 것을 알고 있습니다. 영역 차트를 그려주는 코드 부분에 조건문을 추가하려면 어떻게합니까?조건이 맞으면 지역 차트를 만드는 방법을 선택하고 그렇지 않으면 꺾은 선형 차트를 만드시겠습니까?

내 데이터는 다음과 같은 형식이 있습니다

entries = [ { "key":"variable A", "value":[..] }, { "key":"variable B", "value":[..] } ] 

내가 만든 객체를 반복하고 사용자가 선택한 얼마나 많은 변수를 계산하는 방법 "에 대한". 에 저장되어있는 플롯에 변수의 수는 내가 그러나

.attr("d", function (d) { return (count<=2? areasFocus(d.value):areasFocus())}) 
.style("fill", function (d) { return (count<=2? color(d.key) : color()) }); 

와 마지막 두 문장을 대체하기 위해 노력했다

focus.selectAll("path.area") 
    .data(entries) 
    .enter() 
    .append("path") 
    .attr("class", "area") 
    .attr("d", function (d) { return (areasFocus(d.value))}) 
    .style("fill", function (d) { return (color(d.key)) }); 

"계산"내가 말해 콘솔에 오류가 "읽을 수 없습니다 속성 '길이가'정의되지 않은 "및 코드 나누기.

문제가 조건문에있는 것 같습니다.

아이디어가 있으십니까? 감사!

답변

0

항목 변수에있는 내용은 길이 속성을 포함하지 않습니다. 배열 /리스트의 길이를 가져오고 배열 /리스트가 아닌 객체를 얻고 싶습니다.

+0

감사합니다. 개체의 요소 수를 계산하는 문제를 해결했습니다. 상태를 기반으로 영역 차트를 만드는 방법의 문제는 여전히 지속됩니다 ... – mfroese

0

나는 문제가 if 문장에 있었을 때, 조건이 거짓 일 때 나는 "nothing"을 할 필요가 있다고 생각한다. 내 실수는 ares.Focus()를 아무런 문제없이 호출하는 것이 었습니다.