2016-08-15 3 views
0

막대 막 대형 차트에 확대/축소 기능을 추가하려고합니다. 내가 달성하고자하는 것은 사용자가 특정 영역 위로 커서를 드래그하면 해당 영역을 확대 할 수 있어야하고 x 축 값이 해당 달의 일 수를 표시하도록 변경되어야합니다. 다음 this example 동일한 확대/축소 기능을 통합하려고했습니다. (월, 2 월 등)D3 X 축 확대/축소

Error: <rect> attribute transform: Expected number, "translate(NaN,0)". 

내가 줌 기능을 할 노력하고있어하는 것은 한 번 보여주는 개월에서 변경해야합니다 x 축 확대된다

하지만 보이는이 오류가 발생합니다 1 월 1 일, 2 월 1 일, 3 월 1 일 등). 도움이 될 것입니다.

function bListener() {   
    x.domain(brush.empty() ? x.domain() : brush.extent()); 

    svg.selectAll(".bar") 
     .attr("transform", function(d) { console.log(d.date); return "translate(" + x(d.date) + ",0)"; }); 

    svg.select(".x axis").call(xAxis); 
}  

Here’s the complete code : 다음은 줌 기능에 대한 코드입니다.

답변

1

x 함수는 숫자를 전달해야 d3에서 처리 할 수 ​​있습니다.
현재 문자열을 전달하고 있습니다. 이 경우 d.date"2013-03-21" 문자열입니다.
xtranslate 함수의 숫자를 반환 할 수 있도록 숫자로 포맷해야합니다. 이 경우
는 응답 x(new Date(d.date))

svg.selectAll(".bar").attr("transform", function(d) { 
    console.log(d.date); 
    return "translate(" + x(new Date(d.date)) + ",0)"; 
}); 
+0

감사를 사용 date object로 변경. 데이터 객체를 변경했지만 x 축이 업데이트되지 않는 것 같습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? http://jsfiddle.net/noobiecode/dty0s24k/35/ – user3837019

+0

xAxis 함수는 개월을 사용하는 틱을 표시합니다. - .orient ('bottom') .ticks (d3.time.month) .tickFormat (d3.time.format ('% b % y'))'. 너를 바꾸는 것만 큼 진드기가 바뀌지는 않을거야. d3에서 몇 가지 자습서를 확인해야합니다. 시작하고 최종 제품으로 뛰어 들기보다는 그래프를 작성하십시오. Itll는 장기적으로 차이를 만듭니다. – Craicerjack

+1

나는 xAxis를 만들고있는 곳을보고 플로팅과 포맷을 알아 차렸다. 그것을 게시하기 위해 여기에 다시 올 것이지만 당신은 나를 때렸다. 지금까지 "뛰어 들어가서 최종 제품"까지. 튜토리얼을 사용하여 차트를 만들었습니다. 나는 D3에 대해 잘 알지 못한다는 것을 인정할 것이다. – user3837019