반응형

자바를 통해 그래프를 그려주기 위해서는 그래프를 나타낼 수 있는 라이브러리를 불러오는 과정이 필요하다.

라이브러리는 https://knowm.org/open-source/xchart/ 링크를 통해 다운받을 수 있고 해당 라이브러리를 다운받으면

압축파일 형식의 파일을 다운받게 되는데 이에 대한 압축을 풀어주자.

 

압축을 풀면 위와 같이 .jar 형식의 파일이 존재하는데 이를 프로젝트에 불러올 수 있도록 셋팅해주자.

 

 

그리고 프로젝트 경로에 'buildpath' 폴더를 하나 생성해준 후 해당 경로에 .jar파일을 넣어주자.

 

 

그리고 java 프로젝트의 설정을 진행한다.

우선 1. 에 표시된 것과 같이 프로젝트명을 우클릭하고 Properties 항목을 클릭하면 창이 나타난다.

 

그럼 2~5의 과정을 진행해주고 6의 과정에서 앞에서 buildpath에 지정한 .jar형태의 라이브러리를 불러준다.

 

 

위와 같이 xchart-3.8.1.jar 라이브러리가 링크된 것을 확인할 수 있다.

 

그럼 이제 코드를 입력해보자.

import java.util.function.IntPredicate;
import org.knowm.xchart.QuickChart;
import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.XYChart;

public class graph {
	
	public static void main(String[] args) {
		double[] xData = new double[] {0.0, 1.0, 2.0};
		double[] yData = new double[] {2.0, 1.0, 0.0}; 
		
		XYChart chart = QuickChart.getChart("Sample Chart", "X", "Y", "y(x)", xData, yData);
		new SwingWrapper(chart).displayChart();
	}



}

결과는 아래와 같다.

 

 

그럼 이제 하나의 창에 여러개의 그래프를 그려보자.

 

import java.util.ArrayList;
import java.util.List;

import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.XYChart;
import org.knowm.xchart.XYChartBuilder;
import org.knowm.xchart.XYSeries;
import org.knowm.xchart.style.markers.SeriesMarkers;

public class multiple_graph {
	public static void main(String[] args) {
		int numCharts = 4;
		List charts = new ArrayList();
		for(int i=0; i<numCharts; i++) {
			XYChart chart = new XYChartBuilder().xAxisTitle("X").yAxisTitle("Y").width(600).height(400).build();
			chart.getStyler().setYAxisMin(-10.0);
			chart.getStyler().setYAxisMax(10.0);
			XYSeries series = chart.addSeries(""+i,  null, getRandomWalk(200));
			series.setMarker(SeriesMarkers.NONE);
			charts.add(chart);
		}
		new SwingWrapper(charts).displayChartMatrix();
	}
	
	private static double[] getRandomWalk(int numPoints) {
		double[] y = new double[numPoints];
		y[0] = 0;
		for(int i=1; i<y.length; i++) {
			y[i] = y[i-1]+Math.random()-.5;
		}
		return y;
	}

}

반응형

+ Recent posts