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

JFreeChart는 Java로 작성된 무료 차트 라이브러리입니다. Gantt 차트는 프로젝트 일정 계획을 시각적으로 표현하는데 사용되는 차트 유형입니다. 이 문서에서는 JFreeChart를 사용하여 Gantt 차트를 그리는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치

먼저, JFreeChart를 사용하기 위해 라이브러리를 다운로드하고 클래스패스에 추가해야 합니다. JFreeChart 라이브러리는 여기에서 다운로드할 수 있습니다. 다운로드 후, 압축을 해제하고 jfreechart-1.5.3.jar 파일을 프로젝트의 클래스패스에 추가합니다.

Gantt 차트 그리기

Gantt 차트를 그리기 위해서는 다음과 같은 과정을 따라야 합니다:

  1. 데이터셋 생성
  2. GanttRenderer 인스턴스 생성
  3. Gantt 차트 생성
  4. 차트에 데이터셋과 renderer 추가
  5. 차트 출력

다음은 위의 과정을 따라 Gantt 차트를 그리는 예제 코드입니다:

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.gantt.TaskSeries;
import org.jfree.data.gantt.TaskSeriesCollection;
import org.jfree.data.gantt.Task;
import org.jfree.ui.RefineryUtilities;
import java.util.Calendar;
import java.util.Date;
import org.jfree.data.time.SimpleTimePeriod;

public class GanttChartExample {
    public static void main(String[] args) {
        // 데이터셋 생성
        TaskSeriesCollection dataset = new TaskSeriesCollection();
        TaskSeries series = new TaskSeries("프로젝트 A");
        series.add(new Task("작업 1", new SimpleTimePeriod(createDate(2022, 1, 1), createDate(2022, 1, 4))));
        series.add(new Task("작업 2", new SimpleTimePeriod(createDate(2022, 1, 5), createDate(2022, 1, 8))));
        series.add(new Task("작업 3", new SimpleTimePeriod(createDate(2022, 1, 9), createDate(2022, 1, 12))));
        series.add(new Task("작업 4", new SimpleTimePeriod(createDate(2022, 1, 13), createDate(2022, 1, 16))));
        dataset.add(series);

        // GanttRenderer 생성
        GanttRenderer renderer = new GanttRenderer();

        // Gantt 차트 생성
        JFreeChart chart = ChartFactory.createGanttChart("프로젝트 일정", "작업", "기간", dataset);

        // 차트에 데이터셋과 renderer 추가
        chart.getCategoryPlot().setRenderer(renderer);

        // 차트 출력
        ChartFrame frame = new ChartFrame("Gantt Chart", chart);
        frame.pack();
        RefineryUtilities.centerFrameOnScreen(frame);
        frame.setVisible(true);
    }

    // 날짜 생성 유틸리티 메서드
    private static Date createDate(int year, int month, int day) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month - 1);
        calendar.set(Calendar.DAY_OF_MONTH, day);
        return calendar.getTime();
    }
}

위의 예제 코드는 “프로젝트 A”라는 Gantt 차트를 생성하고, 몇 가지 작업들을 추가하는 방법을 보여줍니다. createDate() 메서드는 주어진 연도, 월, 일로부터 Date 인스턴스를 생성하는 간단한 유틸리티 메서드입니다.

실행 결과

위의 예제 코드를 실행하면 Gantt 차트가 생성되고 프로그램 창에 나타납니다. 차트는 작업 명칭과 해당 작업의 시작일과 종료일을 시각적으로 나타냅니다. 차트는 수직축에 작업 이름을, 수평축에 작업 기간을 나타냅니다.

Gantt 차트

결론

JFreeChart를 사용하여 Gantt 차트를 그리는 방법에 대해 알아보았습니다. JFreeChart는 다양한 종류의 차트를 그릴 수 있는 강력한 라이브러리이며, Gantt 차트를 통해 프로젝트 일정을 시각화할 수 있습니다.

더 많은 정보를 원하시면 JFreeChart 사용자 가이드를 참고하시기 바랍니다.