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 |