[java] JFreeChart에서 Combined 차트 그리기

JFreeChart는 Java 기반의 오픈 소스 라이브러리로, 다양한 종류의 차트를 생성할 수 있습니다. Combined 차트는 여러 개의 서로 다른 차트를 한 번에 표시할 수 있는 기능을 제공합니다. 이 글에서는 JFreeChart를 사용하여 Combined 차트를 그리는 방법에 대해 알아보겠습니다.

JFreeChart 라이브러리 추가

먼저, JFreeChart 라이브러리를 프로젝트에 추가해야 합니다. 다음은 Maven을 사용하는 경우 pom.xml 파일에 의존성을 추가하는 예시입니다. 필요한 경우 JFreeChart 라이브러리의 최신 버전으로 업데이트해야 할 수도 있습니다.

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

위의 예시에서는 JFreeChart의 1.5.3 버전을 사용하고 있습니다.

Combined 차트 그리기

Combined 차트를 그리기 위해 다음 과정을 따라야 합니다.

  1. CombinedDomainXYPlot 객체를 생성합니다. 이 객체는 서로 다른 도메인 축을 사용하는 여러 개의 XYPlot을 결합할 수 있습니다.
  2. XYPlot 객체와 해당하는 데이터셋을 생성합니다. XYPlot 객체는 차트의 외형을 정의하고 데이터셋은 차트에 표시할 데이터를 제공합니다.
  3. CombinedDomainXYPlotXYPlot 객체를 추가합니다.
  4. ChartFactory.createXYLineChart 메서드를 사용하여 JFreeChart 객체를 생성합니다. 이 때, CombinedDomainXYPlot을 전달해야 합니다.
  5. ChartPanel을 생성하여 JFreeChart 객체를 감싸고, 이를 프레임에 추가하여 차트를 표시합니다.

아래는 Combined 차트를 생성하는 예시 코드입니다.

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CombinedDomainXYPlot;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class CombinedChartExample {
    public static void main(String[] args) {
        // CombinedDomainXYPlot 객체 생성
        CombinedDomainXYPlot combinedPlot = new CombinedDomainXYPlot();
        
        // XYPlot 1 생성
        XYSeries series1 = new XYSeries("Series 1");
        series1.add(1, 2);
        series1.add(3, 4);
        XYSeriesCollection dataset1 = new XYSeriesCollection(series1);
        XYPlot plot1 = new XYPlot(dataset1, null, null, null);
        combinedPlot.add(plot1);
        
        // XYPlot 2 생성
        XYSeries series2 = new XYSeries("Series 2");
        series2.add(2, 1);
        series2.add(4, 3);
        XYSeriesCollection dataset2 = new XYSeriesCollection(series2);
        XYPlot plot2 = new XYPlot(dataset2, null, null, null);
        combinedPlot.add(plot2);
        
        // JFreeChart 객체 생성
        JFreeChart chart = ChartFactory.createXYLineChart("Combined Chart",
                "X Axis", "Y Axis", combinedPlot);
        
        // ChartPanel 생성 및 프레임에 추가
        ChartPanel chartPanel = new ChartPanel(chart);
        ChartFrame frame = new ChartFrame("Chart Example", chartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

위의 예시 코드에서는 CombinedDomainXYPlot을 사용하여 XYPlot을 생성하고, 각각의 XYPlot에 데이터를 추가한 후 JFreeChart를 생성합니다. 마지막으로 ChartPanel을 생성하여 차트를 프레임에 표시합니다.

결론

JFreeChart를 사용하여 Combined 차트를 그리는 방법을 알아보았습니다. Combined 차트를 사용하면 서로 다른 차트를 한 번에 표시할 수 있어 데이터를 비교하고 시각화하기에 편리합니다. JFreeChart는 다양한 차트 유형과 설정 옵션을 제공하므로, 필요한 경우 공식 문서나 예제 코드를 참고하면 도움이 될 것입니다.

참고 자료