[javascript] ApexCharts에서 차트에 커서 표시하기

ApexCharts는 매우 강력한 JavaScript 차트 라이브러리입니다. 이 라이브러리를 사용하면 다양한 종류의 차트를 생성하고 훨씬 더 유연하게 커스터마이징 할 수 있습니다. 이번 포스트에서는 ApexCharts를 사용하여 차트에 커서 표시하는 방법을 알아보겠습니다.

1. 차트 데이터 준비하기

우선, ApexCharts를 사용하기 위해 필요한 데이터를 준비해야 합니다. 아래는 예시 데이터입니다.

var chartData = {
  series: [44, 55, 41, 17, 15],
  categories: ['A', 'B', 'C', 'D', 'E']
};

2. ApexCharts 인스턴스 생성하기

데이터를 준비했다면, ApexCharts 인스턴스를 생성해야 합니다. 아래는 차트를 생성하기 위한 기본적인 설정 코드입니다.

var options = {
  chart: {
    type: 'bar',
    height: 450,
    events: {
      mouseMove: function (event, chartContext, config) {
        // 커서 이벤트 처리 코드 작성
      }
    }
  },
  series: chartData.series,
  xaxis: {
    categories: chartData.categories
  }
};

var chart = new ApexCharts(document.querySelector("#chartContainer"), options);
chart.render();

위 코드에서 커서 이벤트 처리 함수를 작성하는 부분에 우리가 차트 위에 커서를 표시하는 로직을 추가하게 됩니다.

3. 커서 이벤트 처리하기

ApexCharts에서 mouseMove 이벤트를 사용하여 차트 위의 커서 위치를 감지할 수 있습니다. 여기에 우리가 원하는 동작을 구현할 수 있습니다. 예를 들어, 커서 위치에 따라 차트의 특정 항목을 강조 표시할 수 있습니다. 아래는 커서 위치에 따라 해당 항목을 강조 표시하는 예시 코드입니다.

chart = new ApexCharts(document.querySelector("#chartContainer"), options);
chart.render();

function handleMouseMove(event, chartContext, config) {
  var hoveredIndex = config.dataPointIndex;
  var seriesIndex = config.seriesIndex;

  chart.updateOptions({
    dataLabels: {
      style: {
        colors: seriesIndex === 0 ? ['#ff0000', '#000000', '#000000', '#000000', '#000000'] : ['#000000', '#000000', '#000000', '#000000', '#ff0000']
      }
    }
  });
}

chartOptions = {
  chart: {
    events: {
      mouseMove: handleMouseMove
    }
  },
  // ... 나머지 차트 옵션들
};

chart = new ApexCharts(document.querySelector("#chartContainer"), chartOptions);
chart.render();

위 코드에서는 handleMouseMove 함수 안에서 커서가 위치한 데이터 포인트의 인덱스와 시리즈의 인덱스를 확인하고, 해당 항목을 강조하기 위해 updateOptions 메서드를 사용하여 dataLabels의 색상을 변경합니다. 이 예시에서는 시리즈 1에 속한 항목을 강조(빨간색)하고, 시리즈 2에 속한 항목은 강조하지 않습니다(검은색).

결론

ApexCharts를 사용하면 JavaScript 기반의 강력한 차트를 생성할 수 있습니다. 커서 이벤트 처리를 통해 사용자가 커서 위치에 따라 차트를 상호작용적으로 조작할 수 있습니다. 이를 활용하여 차트를 보다 매력적으로 만들어보세요.

참고 자료