본문 바로가기

Just Do It/Echarts

Echarts DataZoom

반응형

DataZoom 종류


 

dataZoomInside

데이터 확대/축소 기능이 좌표계 내부에 내장되어 있어

사용자가 마우스 드래그, 마우스 이동 또는 손가락 터치(터치 스크린에서)를 통해

좌표계를 확대/축소하거나 로밍할 수 있습니다.

 

 

 

dataZoomSlider

마우스 드래그 또는 손가락 터치(터치 스크린에서)로 좌표계를 확대하거나

로밍할 수 있는 특수 슬라이더 막대가 제공됩니다.

 

 

 

dataZoomSelect

확대/축소 또는 로밍 좌표계를 위한 maquee tool이 제공됩니다.

toolbox에서만 구성할 수 있는 datazoom입니다.

 

 

 

 

<SAMPLE>

 

ECharts

 

 

 

https://echarts.apache.org/en/option.html#dataZoom

 

Documentation - Apache ECharts

 

echarts.apache.org

 

 

 

 

Live Chart DataZoom


 

실시간 차트 데이터 줌 초기화 문제

 

다양하고 빠른 속도의 dataZoom에 아주 만족하고 있었는데,

문제는 실시간 차트를 그리고 dataZoom을 사용하면 차트가 

refresh될 때마다 원래대로 돌아간다는 것이었습니다.

 

구글링을 해도 정보가 부족하고 이리저리 헤메다가 또

baidu 사이트를 영어로 번역해서 어떻게 찾아냈습니다.

 

 

x, y 축을 가진 그래프를 그렸다고 하고 dataZoom을 다음과 같이 만듭니다.

 

 

dataZoom: [
              {
                  show: true,
                  type: 'inside',
                  filterMode: 'none',
                  xAxisIndex: [0],
                  startValue: 0,
                  endValue: 100
              },
              {
                  show: true,
                  type: 'inside',
                  filterMode: 'none',
                  yAxisIndex: [0],
                  startValue: 0,
                  endValue: 40
              }
            ],

 

⭐Tip
여기서 중요한 건 각각의 dataZoom이 starValue, endValue
초기값을 갖고 있어야 한다는 것입니다.

 

window.onload = function () {
            window.myChart = echarts.init(document.getElementById('main'));

            //scroll datazoom
            window.myChart.on('dataZoom', function(event){
                if(event.batch){
                    option.dataZoom[0].startValue = event.batch[0].startValue;
                    option.dataZoom[1].startValue = event.batch[0].startValue;
                    option.dataZoom[0].endValue = event.batch[0].endValue;
                    option.dataZoom[1].endValue = event.batch[0].endValue;
                } else {
                    option.dataZoom[0].startValue = event.startValue;
                    option.dataZoom[1].startValue = event.startValue;
                    option.dataZoom[0].endValue = event.endValue;
                    option.dataZoom[1].endValue = event.endValue;
                };
            });

		window.myChart.setOption(option);
        }

 

 

사실 이 코드가 어떻게 작동하는지는 잘 모릅니다....ㅎ

근데 넣으니까 되길래 일단 썼습니다😅

 

 

 

 

실시간 차트 toolbox 데이터 줌 초기화 문제

 

ECharts에서 기본 제공하는 toolbox도 기능이 정말 좋은데요.

동그라미 화살표를 누르면 refresh되어 dataZoom을 초기화할 수 있습니다.

 

일반 차트에서는 기가 막히게 잘 먹히지만

실시간 차트에서는 속도가 현저히 느려지거나,

dataZoom start/endValue로 지정한 부분으로 돌아가는 것이 아니라

처음에 그린 xAxis, yAxis의 min, max 값으로 돌아가는 것이 문제였습니다.

 

게다가 ECharts의 수많은 샘플 중에는 제가 참고할 만한 

라이브 차트가 없었습니다.

 

이건 뭐 방법이 없어서 그냥 제가 따로 버튼을 만들어서

초기화 function을 넣어줬습니다.

 

function initGraph(){
            //초기화
            option.dataZoom[0].startValue = 0;            
            option.dataZoom[0].endValue = 100;
            option.dataZoom[1].startValue = 0;            
            option.dataZoom[1].endValue = 40;            
        
            window.myChart.setOption(option);
        }

 

그럼 요런식으로 start/endValue를 다시 지정해주고

그래프를 그리도록 하면 됩니다.

 

반응형

'Just Do It > Echarts' 카테고리의 다른 글

Echarts.js Theme Builder  (0) 2022.02.17
Echarts container/size 조절  (0) 2022.02.08
Echarts 그리기  (2) 2022.02.07
ECharts.js 소개 및 설치  (1) 2022.02.04