d3.js와 chart.js 비교 (차트에만 해당) [닫힌]


88

내 프로젝트에서 chart.js를 여러 번 사용했지만 d3.js를 사용한 적이 없습니다. 많은 사람들이 d3.js가 차트를위한 최고의 자바 스크립트 프레임 워크라고 말하지만 그들 중 누구도 그 이유를 설명 할 수 없습니다. 특히 내가 chart.js와 비교하고 싶을 때 말입니다.

나는 이것을 찾았습니다 : http://www.fusioncharts.com/javascript-charting-comparison/ 그러나 내가 찾던 것이 아닙니다.

사용성 및 성능 측면에서 이러한 프레임 워크의 비교에 대해 아는 사람이 있습니까 (차트에만 해당)?


1
재미를 위해 동일한 데이터 세트로 d3.js를 사용하여 chart.js 기본 차트를 개발하고 있습니다. 당신은 좀 걸릴 수 있습니다 - s.codepen.io/bumbeishvili/debug/RGbvPg
— bumbeishvili

업데이트 2018 D3도 캔버스가
— PirateApp

답변:


215

d3.js"차팅"라이브러리가 아닙니다. SVG / HTML을 만들고 조작하기위한 라이브러리입니다. 데이터를 시각화하고 조작하는 데 도움이되는 도구를 제공합니다. 이를 사용하여 기존 차트 (막대, 선, 원형 등)를 만들 수 있지만 훨씬 더 많은 작업이 가능합니다. 물론이 "너무 많은 능력이있다"는 학습 곡선이 더 가파르다. 위에 구축 된 기존의 차트 라이브러리 많이 있습니다 d3.js- nvd3.js, dimple.js, dc.js당신이 그 길을 가고 싶어합니다.

나는 익숙하지 Chart.js않지만 웹 사이트를 훑어 보면 이것이 밀 차트 라이브러리의 실행에 가깝다는 것을 알 수 있습니다. 그것은 6 개 기본 차트 유형을 지원하고 당신은 이제까지하지 않을 물건을 같이 이 와 그것 . 하지만 API는 간단 해 보이며 사용하기 쉽다고 확신합니다.

그 외에는 둘 사이의 가장 명백한 차이점 Chart.js은 캔버스 기반 d3.js이며 주로 SVG에 관한 것입니다. (이제는 주로d3.js 모든 유형의 HTML 요소를 조작 할 수 있으므로 캔버스에 그리는 데 사용할 수 있기 때문에 주로 말합니다 .) 일반적으로 캔버스는 많은 수의 요소에 대해 SVG를 수행합니다. 포인트, 라인 등 ...). 반면 SVG는 조작하고 상호 작용하기가 더 쉽습니다. SVG를 사용하면 각 점, 선 등이 DOM의 일부가됩니다. 이제 해당 점을 녹색으로 원하고 변경하면됩니다. 캔버스를 사용하면 변경하기 위해 다시 그려야하는 정적 드로잉이 있습니다. 물론 너무 빨리 그려 지므로 일반적으로 눈에 띄지 않습니다. 다음 은 Microsoft의 좋은 자료 입니다.


6
@emrah, 링크는 오래되었을 수 있지만 (IE9 당시) 제공된 정보는 여전히 매우 관련이 있습니다.
— Mark

36

모바일 장치에서 차트를 표시하기 위해 빠른 차트 라이브러리를 찾으려고했기 때문에 성능이 중요했습니다. 또한 상업적으로 사용할 수있는 라이선스가 있어야했습니다. 나는 비교했다 :

  1. c3 : d3 기반이므로 SVG를 사용합니다.
  2. 캔버스를 사용하는 chart.js

차트는 네이티브 앱 내의 WebView 구성 요소 내에로드되며 모든 데이터 (JS 라이브러리 포함)는 로컬이므로 http 요청으로 인해 느려지지 않습니다. 성능을 더욱 극대화하기 위해 모든 것을 하나의 단일 파일에 추가로 넣었습니다.

약 500 개의 데이터 포인트와 함께 4 개의 차트 (선, 막대, 원형, 선 / 막대 콤보)를로드했습니다.

내 시간 측정은 html 페이지의 실제 로딩을 배제했습니다. 렌더링이 끝날 때까지 차트 라이브러리 코드를 사용하기 시작한 순간부터 측정했습니다. 모든 차트 애니메이션이 꺼졌습니다.

C3는 최신 Android 및 IPhone 장치에서 약 1500-1800ms가 걸렸습니다. iPhone은 Android보다 약 100ms 더 나은 성능을 보였습니다.

Chart.js는 약 400-800ms가 걸렸습니다. Android는 iPhone보다 약 300ms 더 나은 성능을 보였습니다.

당연히 SVG가 더 느립니다. 사용 사례에 따라 너무 느릴 수 있습니다.

데스크톱 컴퓨터에서 c3의 렌더링은 약 150-200ms이고 charts.js는 약 80-100ms였습니다. Android 및 iPhone 에뮬레이터에서 동일한 테스트를 실행하면 데스크톱에서와 동일한 결과가 나타납니다. 따라서 모바일 장치의 속도 저하는 하드웨어 / 처리 제한 때문입니다.

도움이되는 희망



0
    chart.js
  • 픽셀에 따라 달라지는 html5 캔버스 태그를 사용하므로 chart.js 생성 그래프의 크기를 조정하면 명확성이 떨어집니다.
  • 이는 선언적이므로 그래프를 생성하기 위해 필요한 입력 만 선언하면됩니다.
  • 학습 곡선이 적습니다.
  • 생성 된 차트 유형은 사전 정의되고 제한됩니다.
    d3.js
  • 해상도에 독립적 인 svg를 사용하므로 d3 생성 그래프의 크기를 조정할 때 선명도가 떨어지지 않습니다.
  • 필수적입니다. 차트를 생성하려면 로직을 작성해야합니다.
  • 가파른 학습 곡선
  • 생성 된 차트 유형은 미리 정의되어 있지 않으며 원하는 차트를 만들 수 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.