기본적으로 확대 / 축소 및 이동 가능한 그래프에서 수천 개의 포인트를 렌더링하는 프로젝트를 업데이트하는 데 사용할 올바른 기술을 선택하려고합니다. Protovis를 사용하는 현재 구현은 성능이 저조합니다. 여기에서 확인하세요 :
http://www.planethunters.org/classify
완전히 축소하면 약 2000 개의 포인트가 있습니다. 하단의 핸들을 사용하여 약간 확대하고 드래그하여 이동해보세요. 컴퓨터가 정말 빠르지 않으면 매우 고르지 않고 CPU 사용량이 한 코어에서 100 %까지 올라간다는 것을 알게 될 것입니다. 초점 영역이 변경 될 때마다 프로 토비스에 다시 그리기가 필요합니다.이 작업은 상당히 느리고 더 많은 포인트를 그릴수록 더 나빠집니다.
인터페이스를 일부 업데이트하고 기본 시각화 기술을 애니메이션 및 상호 작용에 더 잘 반응하도록 변경하고 싶습니다. 다음 기사에서 다른 SVG 기반 라이브러리 또는 캔버스 기반 라이브러리 중에서 선택하는 것으로 보입니다.
http://www.sitepoint.com/how-to-choose-between-canvas-and-svg/
Protovis 에서 성장한 d3.js는 SVG 기반이며 애니메이션 렌더링에 더 적합합니다 . 그러나 나는 얼마나 더 나은지 그리고 그 성능 상한선이 무엇인지에 대해서는 모호합니다. 그런 이유로 KineticJS 와 같은 캔버스 기반 라이브러리를 사용하여보다 완전한 점검을 고려하고 있습니다 . 그러나 한 가지 접근 방식을 너무 많이 사용하기 전에이 정도의 데이터로 유사한 웹 응용 프로그램을 수행 한 사람의 의견을 듣고 의견을 듣고 싶습니다.
가장 중요한 것은 성능이며, 다른 상호 작용 기능을 쉽게 추가하고 애니메이션을 프로그래밍하는 데 중점을 둡니다. 한 번에 2,000 개 이하의 지점이있을 수 있으며 각 지점에 작은 오차 막대가 있습니다. 확대, 축소 및 이동이 부드러워 야합니다. 최신 SVG 라이브러리가 괜찮다면 d3 사용의 용이성이 KineticJS 등의 증가 된 설정보다 중요 할 것입니다. 그러나 캔버스를 사용하는 것, 특히 느린 컴퓨터를 사용하는 사람들에게 큰 성능 이점이 있다면, 저는 확실히 그런 식으로 가고 싶을 것입니다.
SVG를 사용하지만 여전히 원활하게 애니메이션되는 NYTimes에서 만든 앱의 예 : http://www.nytimes.com/interactive/2012/05/17/business/dealbook/how-the-facebook-offering-compares.html . 그 성능을 얻을 수 있고 캔버스 그리기 코드를 직접 작성할 필요가 없다면 아마도 SVG로 갈 것입니다.
일부 사용자는 캔버스 렌더링과 결합 된 d3.js 조작 의 하이브리드를 사용했습니다 . 그러나 온라인에서 이에 대한 많은 문서를 찾거나 해당 게시물의 OP에 문의 할 수 없습니다. 누구든지 이런 종류의 DOM-to-Canvas ( demo , code ) 구현에 대한 경험이 있다면 여러분의 의견도 듣고 싶습니다. 데이터를 조작 할 수 있고이를 렌더링하는 방법 (및 성능)에 대한 사용자 정의 제어를 갖는 좋은 하이브리드로 보이지만 모든 것을 DOM에로드해야하는 것이 여전히 속도를 늦출 수 있는지 궁금합니다.
이 질문과 유사한 기존 질문이 있지만 정확히 같은 질문을하는 질문은 없습니다. 당신의 도움을 주셔서 감사합니다.
후속 조치 : 내가 사용한 구현은 https://github.com/zooniverse/LightCurves에 있습니다.