[java] JFreeChart에서 High Low 차트 그리기

JFreeChart는 Java로 개발된 오픈 소스 차트 라이브러리입니다. 이 라이브러리를 사용하여 High Low 차트를 그릴 수 있습니다. High Low 차트는 주식 가격 등의 변동을 보여주기 위해 사용되며, 최고가와 최저가를 표시하는 선과 그 사이의 변동을 표시하는 바로 이루어져 있습니다.

JFreeChart 라이브러리 추가하기

먼저 JFreeChart 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용한다면 pom.xml 파일에 다음과 같이 의존성을 추가합니다:

<dependencies>
    <dependency>
        <groupId>org.jfree</groupId>
        <artifactId>jfreechart</artifactId>
        <version>1.5.3</version>
    </dependency>
</dependencies>

Maven을 사용하지 않는다면, JFreeChart의 최신 버전을 공식 웹사이트에서 다운로드하여 사용할 수 있습니다.

High Low 차트 데이터 생성하기

High Low 차트를 그리기 위해서는 데이터셋(DataSet)이 필요합니다. JFreeChart에는 여러 종류의 데이터셋 클래스가 제공됩니다. 여기서는 DefaultHighLowDataset 클래스를 사용하여 데이터셋을 생성해보겠습니다.

import org.jfree.data.xy.DefaultHighLowDataset;

// High Low 데이터셋 생성
double[] highValues = {10, 15, 20, 18, 25};
double[] lowValues = {5, 10, 12, 8, 15};
double[] openValues = {8, 12, 16, 14, 22};
double[] closeValues = {9, 14, 18, 16, 24};
double[] volumeValues = {100, 150, 200, 180, 250};
DefaultHighLowDataset dataset = new DefaultHighLowDataset("Stock Data", highValues, lowValues, openValues, closeValues, volumeValues);

위 코드에서는 최고가(highValues), 최저가(lowValues), 시가(openValues), 종가(closeValues), 거래량(volumeValues) 데이터를 각각 배열로 생성하고 DefaultHighLowDataset 클래스를 사용하여 데이터셋을 생성하였습니다.

High Low 차트 그리기

High Low 차트를 그리기 위해서는 HighLowRenderer 클래스와 ChartFactory 클래스를 사용합니다. 다음은 High Low 차트를 그리고 이미지로 저장하는 예제 코드입니다.

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.HighLowRenderer;
import org.jfree.ui.ApplicationFrame;
import java.io.File;
import java.io.IOException;

public class HighLowChartExample extends ApplicationFrame {

    public HighLowChartExample(String title) {
        super(title);
        // High Low 차트 생성
        JFreeChart chart = ChartFactory.createHighLowChart(
                "Stock Price", // 차트 제목
                "Date", // x축 레이블
                "Price", // y축 레이블
                dataset, // 데이터셋
                PlotOrientation.VERTICAL, // 차트 방향
                true, // 범례 표시 여부
                true, // 도구 팁 표시 여부
                false // URL 생성 여부
        );
        
        // High Low Renderer 설정
        XYPlot plot = (XYPlot) chart.getPlot();
        HighLowRenderer renderer = (HighLowRenderer) plot.getRenderer();
        renderer.setDrawOpenTicks(true);
        renderer.setDrawCloseTicks(true);

        // 차트 이미지 파일로 저장
        try {
            ChartUtilities.saveChartAsPNG(new File("highlow_chart.png"), chart, 800, 600);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  
    public static void main(String[] args) {
        HighLowChartExample example = new HighLowChartExample("High Low Chart Example");
        example.pack();
        example.setVisible(true);
    }
}

위 코드에서는 HighLowChartExample 클래스를 생성하여 ApplicationFrame을 상속받은 차트 창을 생성합니다. ChartFactory 클래스의 createHighLowChart 메서드를 사용하여 High Low 차트를 생성합니다. 그 후 ChartUtilities 클래스를 사용하여 차트를 이미지 파일로 저장합니다. 차트 제목, x축 레이블, y축 레이블 등 필요한 설정은 해당 메서드의 매개변수로 전달할 수 있습니다.

실행 결과

위 코드를 실행하면 High Low 차트를 표시하는 창이 생성되며, 차트가 highlow_chart.png 파일로 저장됩니다.

결론

JFreeChart를 사용하여 High Low 차트를 그려보았습니다. JFreeChart는 다양한 종류의 차트를 그릴 수 있는 강력한 라이브러리입니다. High Low 차트를 사용하여 주식 가격 등의 변동을 시각적으로 표현할 수 있습니다. 이를 통해 데이터의 패턴을 파악하고 투자 결정을 도와줄 수 있습니다.

해당 코드와 더 자세한 예제는 JFreeChart 공식 웹사이트를 참조하시기 바랍니다.