[java] 자바 스윙 컴포넌트에서 그래프와 차트를 그리는 방법은 어떻게 되나요?

그래픽스 컨텍스트를 사용하여 선, 원, 사각형 등의 기본 모양을 그릴 수 있고, 텍스트를 표시할 수도 있습니다. 그래픽스 컨텍스트는 JFrame, JPanel 또는 다른 컴포넌트에 대해 얻을 수 있습니다.

그러나 더 풍부하고 복잡한 차트 라이브러리를 사용하는 것이 더 효율적일 수 있습니다. JFreeChart나 XChart와 같은 라이브러리는 선, 막대, 원형, 영역 차트 등 다양한 차트 스타일을 지원하며, 데이터 시각화를 위한 다양한 옵션을 제공합니다. 이러한 라이브러리는 사용자가 손쉽게 차트를 생성하고 커스터마이즈할 수 있는 기능을 갖추고 있습니다.

다음은 Java에서 JFreeChart를 사용하여 간단한 선 그래프를 그리는 예제 코드입니다:

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;

public class LineChartExample extends JFrame {
    public LineChartExample(String title) {
        super(title);

        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1.0, "Category 1", "1");
        dataset.addValue(4.0, "Category 1", "2");
        dataset.addValue(3.0, "Category 1", "3");
        
        JFreeChart chart = ChartFactory.createLineChart(
                "Line Chart Example",
                "X-axis",
                "Y-axis",
                dataset
        );

        ChartPanel chartPanel = new ChartPanel(chart);
        setContentPane(chartPanel);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            LineChartExample example = new LineChartExample("Line Chart Example");
            example.setSize(800, 400);
            example.setLocationRelativeTo(null);
            example.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            example.setVisible(true);
        });
    }
}

물론 이 예제는 간단한 그래프를 그리는 기본적인 것에 불과합니다. 실제 애플리케이션에서는 데이터를 동적으로 추가하고 사용자 인터랙션에 따라 차트를 업데이트하는 방법을 구현하는 것이 일반적입니다.