D3.js (v4.x) forceSimulation with Canvas

몇 년 만에 D3.js 의 forceLayout 을 사용하려고 하면 메이저 버전 업으로 여러가지 바뀌었으므로 비망록을 겸한 메모를 남깁니다.

시나리오


  • 시간이 지남에 따라 노드, 링크가 증가하는 무향 그래프 구현
  • 렌더링에는 Canvas를 사용합니다
  • 노드를 드래그하여 간섭을 허용합니다.
  • Canvas의 리사이즈에도 추종

  • 데모



    여기에서. 초당 노드/링크가 추가됩니다.
    htps://bl. 오 cks. 오rg/f로g화t/아06132f64b7164c1b1993C49dcd9178f



    감상


  • tick 마다 Canvas 의 재묘화를 하는 구현
  • SVG 고유의 enter/exit 같은 것을 생각할 필요가 없기 때문에 그 점은 편하다
  • 어쩌면 속도로는 Canvas 쪽이 유리할 것이다
  • 노드의 드래그는 공식 Force Dragging III
  • forceSimulation.find(x,y,radius)를 사용하여 마우스 포인터와 노드를 정확하게 결정하는 것 같습니다.
  • 링크에 대한 당 판정은 어려울 수 있습니다
  • 유향 그래프로 하는 경우는 Canvas 로 열심히 Arrow Head 를 쓰면 좋기 때문에 어떻게 되는 것이 아닌가
  • 이 목적이라면 원래 h tp // / g g js. rg/ 로 좋지 않아? 의심은 항상 붙어 있습니다

  • 참고


  • htps : // 기주 b. 이 m / d3 / d3 -
  • htp // bl. 오크스. rg/m보s와 ck/아 d70335 그래 f6d167bc36fd3c04378048
  • 좋은 웹페이지 즐겨찾기