[JFreeChart] 무료 자바 차트 사용법 및 예제 :: 소림사의 홍반장!

 



JfreeChart 홈페이지:
http://www.jfree.org/jfreechart/

JFreeChart를 이용한 그래프의 데모 시연
http://www.jfree.org/jfreechart/jfreechart-1.0.13-demo.jnlp

 

위에서 확인한 그래프의 소스코드를 확인할 수 있음

http://www.java2s.com/Code/Java/Chart/CatalogChart.htm

라이브러리를 다운 위치
http://sourceforge.net/projects/jfreechart/files/

JFreeChart 사용시 이슈사항 정리

http://sourceforge.net/projects/jfreechart/files/




1. 프로젝트에 JFreeChart를 설치하는 방법

  1. 최신버전의 2. Documentation과 1. JFreeChart를 다운받으면 된다. tar.gz이나 zip 상관없다.

  2. jfreechart-1.0.13.zip을 다운받고 아무곳에 압축을 푼다.

  3. 이클립스 왼쪽 창의 package 트리에서 원하는 프로젝트를 마우스 오른쪽 클릭

  4. 왼쪽의 트리에서 Java Build Path 선택

  5. Libraries 탭에서 Add External Jars...를 클릭

  6. 2.에서 압축을 푼 폴더 내의 \lib\jcommon-1.0.16.jar와 \lib\jfreechart-1.0.13.jar를 연다.

  7. finish

 

 



 

2. 실 사용 예제

 

 

 

 

 

package chart;

 

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Font;

import java.awt.GradientPaint;

import java.awt.Paint;

 

import org.jfree.chart.ChartFrame;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.axis.CategoryAxis;

import org.jfree.chart.axis.CategoryLabelPositions;

import org.jfree.chart.axis.NumberAxis;

import org.jfree.chart.labels.CategoryItemLabelGenerator;

import org.jfree.chart.labels.ItemLabelAnchor;

import org.jfree.chart.labels.ItemLabelPosition;

import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;

import org.jfree.chart.plot.CategoryPlot;

import org.jfree.chart.plot.DatasetRenderingOrder;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.renderer.category.BarRenderer;

import org.jfree.chart.renderer.category.CategoryItemRenderer;

import org.jfree.chart.renderer.category.LineAndShapeRenderer;

import org.jfree.chart.renderer.category.StandardBarPainter;

import org.jfree.chart.title.TextTitle;

import org.jfree.data.category.DefaultCategoryDataset;

import org.jfree.ui.GradientPaintTransformType;

import org.jfree.ui.HorizontalAlignment;

import org.jfree.ui.StandardGradientPaintTransformer;

import org.jfree.ui.TextAnchor;

 

/**

 * A simple demonstration application showing how to create a bar chart overlaid

 * with a line chart.

 */

public class PolylineBarChart {

 

      

       // Run As > Java Application 으로 실행하면 바로 확인할 있음.

    public static void main(final String[] args) {

       PolylineBarChart demo = new PolylineBarChart();

             JFreeChart chart = demo.getChart();

             ChartFrame frame1=new ChartFrame("Bar Chart",chart);

             frame1.setSize(800,400); 

             frame1.setVisible(true);

    }

   

    public JFreeChart getChart() {

      

        // 데이터 생성

        DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();                // bar chart 1

        DefaultCategoryDataset dataset12 = new DefaultCategoryDataset();         // bar chart 2

        DefaultCategoryDataset dataset2 = new DefaultCategoryDataset();                // line chart 1

 

        // 데이터 입력 ( , 범례, 카테고리 )

        // 그래프 1       

        dataset1.addValue(1.0, "S1", "1");

        dataset1.addValue(4.0, "S1", "2");

        dataset1.addValue(3.0, "S1", "3");

        dataset1.addValue(5.0, "S1", "4");

        dataset1.addValue(5.0, "S1", "5");

        dataset1.addValue(7.0, "S1", "6");

        dataset1.addValue(7.0, "S1", "7");

        dataset1.addValue(8.0, "S1", "8");

        dataset1.addValue(0, "S1", "9");

        dataset1.addValue(0, "S1", "10");

        dataset1.addValue(0, "S1", "11");

        dataset1.addValue(0, "S1", "12");

 

        // 그래프 2       

        dataset12.addValue(0, "S2", "1");

        dataset12.addValue(0, "S2", "2");

        dataset12.addValue(0, "S2", "3");

        dataset12.addValue(0, "S2", "4");

        dataset12.addValue(0, "S2", "5");

        dataset12.addValue(0, "S2", "6");

        dataset12.addValue(0, "S2", "7");

        dataset12.addValue(0, "S2", "8");

        dataset12.addValue(6.0, "S2", "9");

        dataset12.addValue(0, "S2", "10");

        dataset12.addValue(0, "S2", "11");

        dataset12.addValue(0, "S2", "12");

 

        // 그래프 3       

        dataset2.addValue(9.0, "T1", "1");

        dataset2.addValue(7.0, "T1", "2");

        dataset2.addValue(2.0, "T1", "3");

        dataset2.addValue(6.0, "T1", "4");

        dataset2.addValue(6.0, "T1", "5");

        dataset2.addValue(9.0, "T1", "6");

        dataset2.addValue(5.0, "T1", "7");

        dataset2.addValue(4.0, "T1", "8");

        dataset2.addValue(8.0, "T1", "9");

        dataset2.addValue(8.0, "T1", "10");

        dataset2.addValue(8.0, "T1", "11");

        dataset2.addValue(8.0, "T1", "12");

 

        // 렌더링 생성 세팅

        // 렌더링 생성

        final BarRenderer renderer = new BarRenderer();

        final BarRenderer renderer12 = new BarRenderer();

        final LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();

       

        // 공통 옵션 정의

        final CategoryItemLabelGenerator generator = new StandardCategoryItemLabelGenerator();

        final ItemLabelPosition p_center = new ItemLabelPosition(

                ItemLabelAnchor.CENTER, TextAnchor.CENTER

            );

        final ItemLabelPosition p_below = new ItemLabelPosition(

                     ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_LEFT

                     );

        Font f = new Font("Gulim", Font.BOLD, 14);

        Font axisF = new Font("Gulim", Font.PLAIN, 14);

       

        // 렌더링 세팅

        // 그래프 1

        renderer.setBaseItemLabelGenerator(generator);

        renderer.setBaseItemLabelsVisible(true);

        renderer.setBasePositiveItemLabelPosition(p_center);

        renderer.setBaseItemLabelFont(f);

//        renderer.setGradientPaintTransformer(new StandardGradientPaintTransformer(

//                GradientPaintTransformType.VERTICAL));

//        renderer.setSeriesPaint(0, new GradientPaint(1.0f, 1.0f, Color.white, 0.0f, 0.0f, Color.blue));

        renderer.setSeriesPaint(0, new Color(0,162,255));

 

        // 그래프 2       

        renderer12.setSeriesPaint(0, new Color(232,168,255));

        renderer12.setBaseItemLabelFont(f);

        renderer12.setBasePositiveItemLabelPosition(p_center);

        renderer12.setBaseItemLabelGenerator(generator);

        renderer12.setBaseItemLabelsVisible(true);

       

        // 그래프 3       

        renderer2.setBaseItemLabelGenerator(generator);

        renderer2.setBaseItemLabelsVisible(true);

        renderer2.setBaseShapesVisible(true);

        renderer2.setDrawOutlines(true);

        renderer2.setUseFillPaint(true);

        renderer2.setBaseFillPaint(Color.WHITE);

        renderer2.setBaseItemLabelFont(f);

        renderer2.setBasePositiveItemLabelPosition(p_below);

        renderer2.setSeriesPaint(0,new Color(219,121,22));

        renderer2.setSeriesStroke(0,new BasicStroke(

                                               2.0f,

                                               BasicStroke.CAP_ROUND,

                                               BasicStroke.JOIN_ROUND,

                                               3.0f)

        );

       

        // plot 생성

        final CategoryPlot plot = new CategoryPlot();

       

        // plot 데이터 적재

        plot.setDataset(dataset1);

        plot.setRenderer(renderer);

        plot.setDataset(1,dataset12);

        plot.setRenderer(1,renderer12);

        plot.setDataset(2, dataset2);

        plot.setRenderer(2, renderer2);

 

        // plot 기본 설정

        plot.setOrientation(PlotOrientation.VERTICAL);             // 그래프 표시 방향

        plot.setRangeGridlinesVisible(true);                       // X 가이드 라인 표시여부

        plot.setDomainGridlinesVisible(true);                      // Y 가이드 라인 표시여부

 

        // 렌더링 순서 정의 : dataset 등록 순서대로 렌더링 ( , 먼저 등록한게 아래로 깔림 )

        plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);

       

        // X 세팅

        plot.setDomainAxis(new CategoryAxis());              // X 종류 설정

        plot.getDomainAxis().setTickLabelFont(axisF); // X 눈금라벨 폰트 조정

        plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.STANDARD);       // 카테고리 라벨 위치 조정

 

        // Y 세팅

        plot.setRangeAxis(new NumberAxis());                 // Y 종류 설정

        plot.getRangeAxis().setTickLabelFont(axisF);  // Y 눈금라벨 폰트 조정

       

        // 세팅된 plot 바탕으로 chart 생성

        final JFreeChart chart = new JFreeChart(plot);

//        chart.setTitle("Overlaid Bar Chart"); // 차트 타이틀

//        TextTitle copyright = new TextTitle("JFreeChart WaferMapPlot", new Font("SansSerif", Font.PLAIN, 9));

//        copyright.setHorizontalAlignment(HorizontalAlignment.RIGHT);

//        chart.addSubtitle(copyright);  // 차트 서브 타이틀

        return chart;

    }

 

}

 


다른 카테고리의 글 목록

Dev. 참고자료 카테고리의 포스트를 톺아봅니다