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

JFreeChart는 자바에서 사용할 수 있는 강력한 차트 라이브러리입니다. 이 라이브러리를 사용하면 다양한 종류의 차트를 생성하고 커스터마이징할 수 있습니다.

기본적으로 JFreeChart는 X축(X-Axis)과 Y축(Y-Axis)을 제공합니다. 그러나 때로는 특정한 요구사항에 맞춰서 Custom Axis를 추가해야 할 수도 있습니다. 이 글에서는 JFreeChart에서 Custom Axis를 추가하는 방법을 알아보겠습니다.

1. Custom Axis 클래스 생성

먼저 Custom Axis를 구현할 클래스를 생성해야 합니다. 이 클래스는 org.jfree.chart.axis.Axis를 상속받아야 합니다. 그리고 필요한 메소드를 오버라이딩해서 원하는 동작을 구현합니다.

import org.jfree.chart.axis.Axis;

public class CustomAxis extends Axis {

    @Override
    public void resizeRange(double percent, double anchorValue) {
        // Custom Axis의 range를 조정하는 로직을 구현합니다.
        // 예를 들어, percent에 따라 range를 확대 또는 축소하는 등의 동작을 수행합니다.
    }

    @Override
    public void configure() {
        // Custom Axis의 기본 설정을 수행하는 로직을 구현합니다.
    }

    // 기타 필요한 메소드들을 추가로 구현합니다.
}

위의 코드는 CustomAxis 클래스를 생성하는 예시입니다. 필요한 메소드를 오버라이딩하여 원하는 동작을 구현하면 됩니다.

2. Custom Axis를 차트에 추가

import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class CustomAxisDemo extends ApplicationFrame {

    public CustomAxisDemo(String title) {
        super(title);

        JFreeChart chart = createChart(createDataset());

        XYPlot plot = (XYPlot) chart.getPlot();
        ValueAxis valueAxis = new CustomAxis();
        plot.setRangeAxis(1, valueAxis);
        plot.mapDatasetToRangeAxis(1, 1);

        XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
        plot.setRenderer(1, renderer);
    }

    private JFreeChart createChart(XYDataset dataset) {
        // 차트 생성 로직을 구현합니다.
        // 데이터셋과 필요한 설정 등을 이용해서 JFreeChart 객체를 생성합니다.
    }

    private XYDataset createDataset() {
        // 데이터셋 생성 로직을 구현합니다.
        // 필요한 데이터를 이용해서 XYDataset 객체를 생성합니다.
    }

    public static void main(String[] args) {
        CustomAxisDemo demo = new CustomAxisDemo("Custom Axis Demo");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }
}

위의 코드는 CustomAxis를 차트에 추가하는 예시입니다. CustomAxis 클래스를 ValueAxis 타입의 객체로 생성하고, 이를 XYPlotrangeAxis로 설정합니다. plot.mapDatasetToRangeAxis를 통해 데이터셋과 Custom Axis를 매핑하고, 필요한 경우 Renderer를 설정해줍니다.

마치며

이번 글에서는 JFreeChart에서 Custom Axis를 추가하는 방법에 대해 알아보았습니다. Custom Axis를 활용하면 다양한 형태의 차트를 더욱 유연하게 구성할 수 있습니다. JFreeChart 공식 문서와 예제 코드를 참고하면 더욱 다양한 활용법을 익힐 수 있습니다.

참고 자료: