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를 설치하는 방법
- 최신버전의 2. Documentation과 1. JFreeChart를 다운받으면 된다. tar.gz이나 zip 상관없다.
- jfreechart-1.0.13.zip을 다운받고 아무곳에 압축을 푼다.
- 이클립스 왼쪽 창의 package 트리에서 원하는 프로젝트를 마우스 오른쪽 클릭
- 왼쪽의 트리에서 Java Build Path 선택
- Libraries 탭에서 Add External Jars...를 클릭
- 2.에서 압축을 푼 폴더 내의 \lib\jcommon-1.0.16.jar와 \lib\jfreechart-1.0.13.jar를 연다.
- 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. 참고자료' 카테고리의 다른 글
[eclipse 활용] snippets(코딩 토막들) - 노가다 코딩은 이제 그만~! (0) | 2014.02.24 |
---|---|
[eclipse 활용] scrapbook - 컴파일 없이 테스트 하기! (0) | 2014.02.24 |
[JFreeChart] 1.0.15 버전 eclipse 설치 및 사용 (0) | 2013.08.25 |
nbtstat, IP추적 (0) | 2013.07.02 |
IBM Tivoli Access Manager(TAM) WebSEAL 개요, junction에 대한 이해 (0) | 2013.03.21 |