[java] JFreeChart에서 Custom Dataset 사용하기

JFreeChart는 자바 기반의 오픈 소스 라이브러리로, 다양한 형식과 스타일의 그래프를 생성하는 데 사용됩니다. 이 라이브러리를 사용하면 막대 그래프, 선 그래프, 원 그래프 등 다양한 유형의 그래프를 생성할 수 있습니다. 이번 글에서는 JFreeChart에서 Custom Dataset을 사용하는 방법에 대해 알아보겠습니다.

Custom Dataset이란?

JFreeChart에서 데이터셋(Dataset)은 그래프에 표시되는 데이터를 포함하는 객체입니다. 보통은 표준적인 데이터셋 구현체인 DefaultCategoryDataset, DefaultPieDataset 등을 사용하게 됩니다. 그러나 때로는 특정한 요구사항을 충족시키기 위해 Custom Dataset을 만들어야 할 수도 있습니다. Custom Dataset을 사용하면 그래프를 생성하고 제어하는 데 더 많은 유연성을 가질 수 있습니다.

Custom Dataset 구현하기

Custom Dataset을 구현하기 위해서는 org.jfree.data.general.Dataset 인터페이스를 구현해야 합니다. 이 인터페이스에는 그래프 그릴 때 필요한 메소드들이 정의되어 있습니다.

아래는 Custom Dataset을 구현하는 간단한 예시입니다.

public class CustomDataset implements Dataset {
    private List<String> categories;
    private List<Double> values;

    public CustomDataset(List<String> categories, List<Double> values) {
        this.categories = categories;
        this.values = values;
    }

    @Override
    public int getSeriesCount() {
        return 1;  // 하나의 시리즈만 사용
    }

    @Override
    public Comparable<?> getSeriesKey(int series) {
        return "Series 1";  // 시리즈의 이름
    }

    @Override
    public int getItemCount(int series) {
        return categories.size();  // 데이터 항목 개수
    }

    @Override
    public Number getX(int series, int item) {
        return item;  // X값은 데이터 항목의 인덱스로 표시
    }

    @Override
    public Number getY(int series, int item) {
        return values.get(item);  // Y값은 데이터 값으로 표시
    }

    @Override
    public int indexOf(Comparable<?> seriesKey) {
        return 0;  // 시리즈 인덱스
    }
}

위 예시에서는 카테고리와 값의 리스트를 생성자로 받아 Custom Dataset을 초기화합니다. getSeriesCount(), getSeriesKey(), getItemCount(), getX(), getY(), indexOf() 등의 메소드를 구현하여 데이터 값을 그래프에 표시할 수 있습니다.

Custom Dataset 사용하기

Custom Dataset을 사용하여 JFreeChart에서 그래프를 생성하는 방법은 간단합니다. 아래는 Custom Dataset을 사용하여 막대 그래프를 생성하는 예시입니다.

List<String> categories = Arrays.asList("Category 1", "Category 2", "Category 3");
List<Double> values = Arrays.asList(10.0, 20.0, 30.0);

CustomDataset dataset = new CustomDataset(categories, values);

JFreeChart chart = ChartFactory.createBarChart(
    "My Bar Chart",  // 그래프 제목
    "Category",  // X축 레이블
    "Value",  // Y축 레이블
    dataset,  // 사용할 Dataset
    PlotOrientation.VERTICAL,  // 그래프 방향
    true,  // 범례 표시 여부
    true,  // 도구 상자 표시 여부
    false  // URL 링크 사용 여부
);

위 예시에서는 Custom Dataset을 생성한 후, ChartFactory.createBarChart()를 사용하여 막대 그래프를 생성합니다. 생성된 그래프에는 Custom Dataset에 있는 데이터가 표시됩니다.

결론

JFreeChart에서 Custom Dataset을 사용하면 다양한 유연성을 가진 그래프를 생성하고 제어할 수 있습니다. Custom Dataset을 구현하여 원하는 형태와 스타일의 그래프를 만들어보세요. 더 자세한 정보는 JFreeChart 공식 문서를 참고하세요.

References