티스토리 뷰

들어가며

  • Linchart를 사용하면서 전시해야 할 값(series)의 수가 너무 많아서 UI성능이 느려지는 이슈가 발생했다.

 


해결 방법

Series-Reducer 사용

  • series-reducer는 Chart 전시 값(series)이 많을 때 series개수를 줄여줌
  • Ramar-Douglas-Peucker 알고리즘을 통해서 series개수를 줄여준다고 함

 

  • 예제 코드
List<Point> graphPointList = new ArrayList<>();    
for () {
  graphPointList.add(new Point(x, y));  
}
final double epsilon = 0.01;        //  0.01은 series-reduce 웹페이지에 예제로 나와있는 값임. epsilon이 작을수록 연산량이 많아짐 & 그래프가 디테일해 짐
List<Point> reduced = SeriesReducer.reduce(graphPointList, epsilon); // 원본 리스트의 데이터를 reduce 하여 reduce 리스트 생성
XYChart.Series<Number, Number> xyChartSeries = new XYChart.Series<>();
reduced.forEach(graphPoint -> xyChartSeries.getData().add(new Data<>(graphPoint.getX(), graphPoint.getY())));  // reduce 리스트를 Series에 입력
return xyChartSeries;

참고

 

LukaszWiktor/series-reducer

A java implementation of Ramer–Douglas–Peucker algorithm for reducing number of points in data series. - LukaszWiktor/series-reducer

github.com


끝으로

이 글이 도움이 되었다면, Google 광고 한번씩 클릭 부탁 드립니다. 🙏🙏🙏

광고 클릭은 많은 힘이 됩니다!

반응형
댓글