2015-01-29 4 views
0

x 축에서 패닝을하면 가속 패닝이되는 d3 예제가 있습니다. 즉, 왼쪽 버튼을 누른 상태에서 포인터를 움직이면 데이터가 비선형으로 이동합니다. 이것은 아마도 가장 좋은 예에 예시되어있다, 참조 : 이상한 D3 팬/줌 동작 - 가속 팬

https://bl.ocks.org/sachams/d8621093ebb8181d50fe

내가 문제는 내가, 내가와 마우스 입력을 캡처 된 동일한 요소에 확대경을 부착 한 것입니다 제안 일부 게시물을 읽고 내가 가진 것을 그들 사이에 여분을두기 위해서 ( d3.behavior.zoom jitters, shakes, jumps, and bounces when dragging).

다른 하위 요소를 추가하고 내 zoomer를 다른 장소에 연결하는 모든 종류의 조합을 시도했지만 작동하는 것을 찾을 수 없습니다.

제안 사항?

+0

줌 처리기에서 확대/축소 동작을 위해 x 도메인을 재설정하는 것이 문제인 것처럼 보입니다. 이미 x 축척을 줌 동작에 "부착"했으므로이를 수행 할 필요가 없습니다. –

+0

그게 다야 - 고마워 !! 확대/축소 핸들러에서 다음 함수를 호출하여 수정했습니다. function updateZoom() { xAxisG.call (xAxis); yAxisG.call (yAxis); xGridG.call (xGrid); yGridG.call (yGrid); // 줄을 추가하십시오. path.datum (scope.data) .attr ('d', line); }' – sachams

답변

0

문제는 ZOM 핸들러 함수 (update())에서 당신이 X 스케일의 도메인을 재설정하고 있다는 것입니다 :

x.domain(scope.range); 
// ... 
Zoomer.x(x) // update the zooming behavior to match the domain 

첫 번째 줄은 지터가 발생하는 것이다. 이 코드를 호출하기 전에 줌 동작에 의해 직접 호출되는 함수에서 scope.rangex.domain()으로 설정 했으므로이 작업은 필요하지 않습니다. 두 번째 줄은 이미 줌 동작을 통해 x 눈금을 "추적"했지만이 경우 아무런 해를 입지 않았으므로 필요하지 않습니다.