이번 프로젝트에도 실시간 데이터를 chart로 보여줘야 한다.
기존에 사용하던 plotly.js를 사용하려 했지만, 프로젝트 디자인과 가장 비슷한
UI가 APEX CHART였다.
이전에, 환경을 주제로한 충북대학교 컨퍼런스에 참여한 적이 있었었다.
각 회사마다 공기질이나 환경 데이터를 chart로 보여주기에
어떤 라이브러리를 사용했는지 물어보았더니
APEX CHART를 사용했다고 한다.
나는 chart 라이브러리는 APEX CHART와 Plotly.js를 사용했는데,
그 두 개를 비교해보았다.
개인적인 생각이지만,
Docs는 APEX CHART가 Plotly.js 가 좀 더 세세하게 설명되어 있다.
Plotly는 chart 코드와 해당 UI만 떡하니 있는 반면,
APEX CHART는 차트에 대한 설명이 자세히 나와있고 어떤 객체에 어떤 문자열을 입력
하면 어떻게 변하는지 세세하게 나와있다.
APEX CHART가 Plotly보다 Gradient 기능이 더 세세하게 다룰 수 있다.
Plotly.js가 Gradient가 없는 것은 아니지만
영역별로 투명도를 줄 수는 없다.
예를 들어 line chart의 영역 별로 어떤 부분은 gradient를 연하게 어떤 부분은 진하게 줄 수 없다는 것이다.
코드로 구현하는 방법은 APEX CHART나 Plotly.js나 유사하다.
크게, [ 데이터 ] 받아오는 부분과 [ UI를 커스텀 ] 하는 부분이 있다.
특히 UI 커스텀 하는 부분에는 chart 종류와 선 또는 막대 style를 정해주는 방법 등
방식이 유사하여
어려움이 없었다.
프로젝트 디자인 상 같은 line chart이지만 하나는 solid(곡선)만 보여줘야 했고
하나는 gradient(그라데이션) 효과를 보여줘야 했다.
그럴 때는 다음과 같이 코드를 작성하면 된다.
options: {
chart: {
id: 'area-1',
group: 'social',
type: 'area',
zoom: {
enabled: true, // 차트 줌 기능 활성화
type: 'xy', // 줌 타입
autoScaleYaxis: true, // Y축 자동 스케일링 여부
},
},
stroke: {
width: [2, 2],
curve: 'smooth',
},
fill: {
type: ['gradient', 'solid'], // 'solid'로 설정하면 영역이 채워지지 않습니다.
gradient: {
shade: 'light',
type: 'vertical',
shadeIntensity: 0.7,
inverseColors: false,
opacityFrom: 0.8,
opacityTo: 0.4,
stops: [0, 65, 100],
},
},
Options는 UI를 커스텀 하는 객체 문장이다.
Fill :{
type : [‘gradient’, ‘solid’]
}
가 바로 한 쪽은 그라데이션, 한쪽은 곡선만 주는
명령어다.
간단히 배열로 처리할 수 있는 부분이었다.
그 뿐만 아니라,
stroke :{
width: [2 , 2]
curve : ‘smooth’
}
문장 또한 곡선과 그라데이션 둘 다 2px로 크기로 값을 주는 것이다.