[java] JFreeChart에서 Custom Label 추가하기

JFreeChart는 Java에서 사용할 수 있는 강력한 그래프 생성 라이브러리입니다. 이 라이브러리를 사용하여 그래프를 그릴 때, 축 레이블에 사용자 정의 레이블을 추가할 수 있습니다.

1. 그래프 생성

먼저, JFreeChart를 사용하여 그래프를 생성해야 합니다. 아래의 예제 코드를 통해 그래프를 생성하는 방법을 알아보겠습니다.

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class ChartExample {

    public static void main(String[] args) {
        // 데이터셋 생성
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1, "Series1", "Label1");
        dataset.addValue(2, "Series2", "Label2");
        dataset.addValue(3, "Series3", "Label3");
        
        // 그래프 생성
        JFreeChart chart = ChartFactory.createBarChart(
            "Chart Title",
            "Category Axis Label",
            "Value Axis Label",
            dataset,
            PlotOrientation.VERTICAL,
            true,
            true,
            false
        );
        
        // 차트 프레임 생성
        ChartFrame frame = new ChartFrame("Chart Example", chart);
        frame.pack();
        frame.setVisible(true);
    }
}

위의 코드는 JFreeChart를 사용하여 바차트를 생성하는 간단한 예제입니다. ChartFactory.createBarChart 메서드를 사용하여 그래프를 생성하고, ChartFrame을 통해 그래프를 표시합니다.

2. Custom Label 추가

이제, 그래프의 축 레이블에 Custom Label을 추가해보겠습니다. 아래의 코드를 참고하여 레이블을 추가할 수 있습니다.

import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class CustomLabelExample {

    public static void main(String[] args) {
        // 데이터셋 생성
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1, "Series1", "Label1");
        dataset.addValue(2, "Series2", "Label2");
        dataset.addValue(3, "Series3", "Label3");
        
        // 그래프 생성
        CategoryAxis categoryAxis = new CategoryAxis("Category Axis Label");
        NumberAxis numberAxis = new NumberAxis("Value Axis Label");
        
        CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, numberAxis, null);
        JFreeChart chart = new JFreeChart("Chart Title", JFreeChart.DEFAULT_TITLE_FONT, plot, true);
        
        // Custom Label 추가
        categoryAxis.setTickLabelsVisible(false);
        categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); // 90도 회전
        
        // 차트 프레임 생성
        ChartFrame frame = new ChartFrame("Custom Label Example", chart);
        frame.pack();
        frame.setVisible(true);
    }
}

위의 코드에서는 CategoryAxis 객체를 사용하여 카테고리 축의 레이블을 커스터마이징합니다. setTickLabelsVisible(false)를 통해 레이블을 숨기고, setCategoryLabelPositions(CategoryLabelPositions.UP_90)를 통해 레이블을 90도로 회전시킬 수 있습니다.

이제 위 코드를 실행하면, 그래프의 축 레이블이 숨겨지고 90도로 회전된 것을 확인할 수 있습니다.

JFreeChart의 자세한 사용법은 JFreeChart 공식 문서를 참고하시기 바랍니다.

참고 자료