본문 바로가기
Study/JAVA

XChart를 이용한 실시간 그래프

by Answer Choi 2018. 1. 11.
반응형

JAVA용 실시간 그래프를 찾다가 발견한 XChart !!


물론 오픈소스입니다.


많은 그래프중 구현할 그래프는 Real-time JAVA Chart입니다.



먼저 구현을 위해 라이브러리를 받아야 합니다.


xchart 홈페이지로 이동합니다.



최신버전의 라이브러리르 다운로드 합니다.


압축을 풀어주세요.



이제 xchart-3.5.0.jar 파일을 라이브러리로 등록하시면 됩니다.



Eclipse에서 프로젝트를 마우스 우클릭-Properties를 클릭하세요.


위 그림처럼 창이 나타나면 Java Build Path - Add External JARs...을 클릭하여, xchart-3.5.0.jar 파일을 추가하면 됩니다.


저는 시간과 전력값을 가져와 그래프로 그려주는 예제를 해 보았습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void init(){
    System.out.println("chart init");
    for(int i=0;i<10;i++){
        xData[i]=0;
        yData[i]=0;
    }
    try{
        if(sw.getClass()!=null){
            System.out.println("already created SwingWrapper");
        }
    }catch(Exception e){
        // Create Chart
        chart = QuickChart.getChart("EnerView Monitoring""Timestamp""Power""Wh", xData,yData);
        // Show it
        sw= new SwingWrapper<XYChart>(chart);
        sw.displayChart();
    }
}
cs


그래프 초기화 하는 부분입니다.


Line 3~6 : 그래프로 뿌려줄 array 입니다. 0으로 초기화 합니다.


Line 7~17 : 그래프 초기화 하는 부분입니다.


try~catch로 구현한 것은 그래프 창인 SwingWrapper가 중복으로 만들어 지는걸 막기위해서 입니다.


catch부분이 chart를 만들고, SwingWrapper를 만드는 부분입니다.


초기 데이터 값은 0이므로 아무것도 나타나지 않습니다.(0으로 나옵니다.)


1
2
3
4
5
6
7
8
9
10
public static void show(double time,double watt) {
    for(int i=0;i<9;i++){
        xData[i]=xData[i+1];
        yData[i]=yData[i+1];                
    }
    xData[9]=time;
    yData[9]=watt;
    chart.updateXYSeries("Wh", xData, yData,null);
    sw.repaintChart();            
}
cs


이 부분이 그래프로 그리는 코드입니다.


디바이스에서 데이터를 받으면 이 함수가 호출됩니다.


time은 timestamp값이고, watt는 Wh 값입니다.


Line 2~5 : array값을 한칸씩 shift 합니다.


Line 6~7 : 마지막에 받은 데이터를 새롭게 추가합니다.


Line 8 : chart 데이터를 새로 만듭니다.


Line 9 : SwingWrapper에 다시 그려줍니다.




실행한 모습입니다.


java 실행파일을 만드는 방법은 JAR 실행파일 만들기 를 참고하세요.

반응형

'Study > JAVA' 카테고리의 다른 글

JAVA에서 타 프로그램 실행시키기  (0) 2017.05.29
CSV 파일로 저장하기  (2) 2017.05.02
JAVA FX 코딩하기  (0) 2017.04.19
JAVA FX(UI) for Eclipse 설치하기  (0) 2017.04.11
JAVA 프로젝트 JAR로 실행하기!!  (1) 2017.02.23

인기글