최근 프로젝트에서 시계열 데이터를 시각화해야 하는 요구사항이 있었다. 사용자 행동 데이터를 시간대별로 구분하여 효과적으로 보여 주기 위해 여러 Vue.js 차트 라이브러리들을 검토했고, 이 과정에서 얻은 인사이트를 공유하고자 한다.
내가 고려한 라이브러리는 Vue에서 사용할 수 있는 차트 라이브러리들로, 기존 JavaScript 차트 라이브러리를 Vue에 쉽게 통합할 수 있는 것들이다. 각 라이브러리의 장단점을 간단히 정리해 보았다.
| 장점 | 단점 |
|---|---|
| - 간단한 API로 다양한 차트 제공 | - 맞춤형 상호작용 차트를 만들 때 한계가 있음 |
| - 다양한 기본 차트 타입 지원 | - 매우 대용량의 데이터를 처리할 때 성능이 떨어질 수 있음 |
| - 상세한 문서화 | - 기본 디자인이 단조로움 |
| 장점 | 단점 |
|---|---|
| - 대용량 데이터 처리에 유리함 | - 문서화가 다른 라이브러리에 비해 덜 직관적임 |
| - 복잡한 데이터 시각화에 적합 | - 설정이 복잡하고 초보자가 처음 사용할 때 난이도가 있음 |
🖥️ GitHub
| 장점 | 단점 |
|---|---|
| - 다양한 차트 타입을 제공하며, 대시보드에 적합 | - 매우 큰 데이터셋에 적합하지 않음 |
| - 간단한 API로 차트 커스터마이징이 쉬움 | - 자유도는 상대적으로 낮아서 매우 맞춤형 차트 구현에 한계가 있음 |
🖥️ GitHub
| 장점 | 단점 |
|---|---|
| - 다양한 차트 유형과 전문적인 대시보드에 적합함 | - 상업적 라이선스가 필요함(비상업적 용도는 무료) |
| - 상호작용과 애니메이션이 뛰어나고, 매우 직관적인 API 제공 | - 차트가 무겁기 때문에 성능 문제를 초래할 수 있음 |
🖥️ GitHub
| 장점 | 단점 |
|---|---|
| - 복잡한 차트와 커스터마이징에 적합 | - 학습 곡선이 매우 가파름 |
| - 다양한 데이터 구조와 상호작용을 매우 유연하게 처리할 수 있음 | - 간단한 차트 구현에는 오버스펙일 수 있음 |
내가 라이브러리를 선택하는 데 있어 중요하게 고려한 요소는 다음과 같다.
- 문서화 품질
- 커스터마이징 필요 없이 즉시 사용 가능한 기본 기능
- 무료 라이선스
- 낮은 진입 장벽
가장 먼저 상업적으로 사용하려면 유료인 highcharts-vue와 학습 곡선이 매우 가파른 vue-d3를 제외하였다.
처음에는 vue-chartjs를 사용할 생각이었다. 차트 라이브러리 중에 가장 인지도 높은 라이브러리이기도 하고, 문서화가 매우 잘되어 있기 때문이다. 하지만 대용량 데이터 처리에 성능 이슈가 있을 수 있다는 점과 커스터마이징의 한계 때문에 보류하게 되었다.

vue-echarts는 데모로 zoom이나 pan 기능을 탑재한 시간대별 그래프 만드는 법이 나와 있기도 하고, 대용량 데이터 처리에 탁월한 성능을 가지고 있다고 하여 선택하려고 했다. 하지만 실제 설정 과정에서 복잡함을 느꼈고, 초보자가 사용하기에는 난이도가 높았다. 문서화도 다른 라이브러리에 비해 직관적이지 않아 빠른 속도로 프로젝트를 진행하는 데에는 적합하지 않다고 판단하였다.

vue-apexcharts는 문서화가 매우 잘 되어 있었고, 데모 페이지에 내가 구현하고자 했던 차트와 유사한 예제(Datetime X-axis)가 제공되어 있었다. 추가 커스터마이징이 거의 필요 없어서 빠르게 적용할 수 있었으며, 간단한 API 덕분에 사용하기도 매우 편리했다.
물론 대용량 데이터 처리 성능에서는 vue-echarts나 vue-d3에 비해 부족할 수 있지만, 현재는 대용량 데이터를 다루지 않기 때문에 우선은 이것을 사용하기로 결정했다. 추후 성능 이슈가 발생하면 그때 라이브러리를 변경할 계획이다.
프로젝트의 규모와 요구사항에 따라 적절한 차트 라이브러리를 선택하는 것은 중요하다.
나는 이번 프로젝트에서 빠른 개발과 쉬운 사용성을 중점으로 라이브러리를 선택했지만, 대규모 데이터 처리의 필요성이 커지면 D3.js 같은 라이브러리를 깊게 학습하는 것도 좋은 방법일 것 같다.
혹여나 이 글을 보게 될 분들도 여러 사고를 거쳐 합리적인 라이브러리를 선택하길 바란다.
잘보고 갑니다.