# 차트 관련 예제및 소스 : http://www.java2s.com/Code/Java/CatalogJava.htm
참고사이트 : www.jfree.org
샘플예제 Applet 실행 : http://mimul.com/examples/jfree/jfreechart-1.0.10-demo.jnlp

# 차트 한글 깨짐 현상시 확인

# BarChartBean.java

package util.chart;

import org.jfree.chart.*;
import org.jfree.data.category.*;
import org.jfree.chart.renderer.category.*;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.*;
import java.awt.*;

/**
 * FileName : BarChartBean.java
 * Comment  : 
 * @version : 1.0
 * @author  : sunshiny
 * @date    : 2011. 1. 5.
 */
public class BarChartBean {

	public static void main(String arg[]){
		BarChartBean bcb = new BarChartBean();

		JFreeChart chart = bcb.getBarChart();
		ChartFrame frame1 = new ChartFrame("Bar Chart",chart);
		frame1.setSize(700,250);  
		frame1.setVisible(true);
		frame1.setLocation(100, 200);


	}

	public JFreeChart getBarChart() {
		String titleStr = "차트 타이틀";

		// row keys...
		final String series1 = "First";
		//        final String series2 = "Second";
		//        final String series3 = "Third";

		// column keys...
		final String category1 = "서울";
		final String category2 = "부산";
		final String category3 = "대구";
		final String category4 = "인천";
		final String category5 = "광주";
		final String category6 = "대전";
		final String category7 = "울산";
		final String category8 = "경기";
		final String category9 = "강원";
		final String category10 = "충북";
		final String category11 = "충남";
		final String category12 = "전북";
		final String category13 = "전남";
		final String category14 = "경북";
		final String category15 = "경남";
		final String category16 = "제주";

		// create the dataset...
		final DefaultCategoryDataset dataset = new DefaultCategoryDataset();

		dataset.addValue(1.0, series1, category1);
		dataset.addValue(5.0, series1, category2);
		dataset.addValue(4.0, series1, category3);
		dataset.addValue(27.0, series1, category4);
		dataset.addValue(30.0, series1, category5);
		dataset.addValue(10.0, series1, category6);
		dataset.addValue(11.0, series1, category7);
		dataset.addValue(7.0, series1, category8);
		dataset.addValue(2.0, series1, category9);
		dataset.addValue(16.0, series1, category10);
		dataset.addValue(19.0, series1, category11);
		dataset.addValue(22.0, series1, category12);
		dataset.addValue(23.0, series1, category13);
		dataset.addValue(27.0, series1, category14);
		dataset.addValue(31.0, series1, category15);
		dataset.addValue(12.0, series1, category16);

		JFreeChart chart = ChartFactory.createBarChart(titleStr, "", ""
				, dataset, PlotOrientation.VERTICAL, true,true, false);

		/**
		 * Chart 폰트 설정, 클래스 파일 위치 : package org.jfree.chart.StandardChartTheme.java
		 * 		
		 */
		chart.getTitle().setFont(new Font("sansserif", Font.BOLD, 20));
		chart.getLegend().setItemFont(new Font("sansserif", Font.BOLD, 15));
		chart.getCategoryPlot().setNoDataMessageFont(new Font("sansserif", Font.BOLD, 15));
		chart.getPlot().setNoDataMessageFont(new Font("sansserif", Font.BOLD, 15));

		System.out.println(chart.getPlot().getNoDataMessageFont().getName());

		chart.setBackgroundPaint(Color.WHITE);
		chart.getTitle().setPaint(Color.orange);

		StandardCategoryItemLabelGenerator stdCateGen 
		= new StandardCategoryItemLabelGenerator();
		BarRenderer barRender = new BarRenderer();

		CategoryPlot plot = chart.getCategoryPlot();

		barRender.setItemLabelGenerator(stdCateGen); // 그래프별 값 출력
		plot.setRenderer(barRender);                 // 그래프별 값 출력

		/*		plot.setDomainAxis(new CategoryAxis("지역"));
		plot.setRangeAxis(new NumberAxis("수치"));
		plot.setOrientation(PlotOrientation.VERTICAL);
		 */

		//		plot.setDomainGridlinesVisible(true);
		plot.setRangeGridlinesVisible(true); // 가로 그리드 라인 보이기

		plot.setRangeGridlinePaint(Color.GRAY); 
		plot.setBackgroundPaint(Color.WHITE);

		// set the range axis to display integers only...
		final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
		rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
		rangeAxis.setUpperMargin(0.40);

		// disable bar outlines...
		final CategoryItemRenderer renderer = plot.getRenderer();
		renderer.setSeriesItemLabelsVisible(0, Boolean.TRUE);

		final CategoryAxis domainAxis = plot.getDomainAxis();
		// x축 문자열 회전(STANDARD, UP_45, UP_90,DOWN_45,DOWN_90)
		domainAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD); 
		domainAxis.setLowerMargin(0.01d);
		domainAxis.setUpperMargin(0.01d);
		domainAxis.setCategoryMargin(0.30);

		return chart;
	}
}
# chart.jsp
<%@ page language="java" contentType="image/png; charset=UTF-8"	pageEncoding="UTF-8" %>
<%@ page import="org.jfree.chart.*" %>
<%@ page import="util.chart.*"%>
<%@ page import="java.util.*"%>
<%@ page import="org.jfree.data.category.*"%>
<%@ page import="org.jfree.ui.RefineryUtilities"%>
<%@ page import="org.jfree.chart.plot.PlotOrientation"%>


<%
	ServletOutputStream sos = response.getOutputStream();
	BarChartBean bcb = new BarChartBean();
	JFreeChart chart = bcb.getBarChart();
	ChartUtilities.writeChartAsPNG(sos, chart, 700, 250);
	

/*
	심각: Servlet.service() for servlet jsp threw exception
	java.lang.IllegalStateException: getOutputStream() has already been called for this response
	# Exception
	jsp에서 outputStream을 사용할때 servlet에서 생성된 writer 객체와 중복이 되어서 발생하는 에러.
	이때 servlet에서 생성된 writer 객체를 clear 시키고 jsp에서 다시 생성해서 사용하면 되는것.
	
*/
	out.clear();
	out = pageContext.pushBody();	

%>
# Result Chart Image 사용자 삽입 이미지
01 5, 2011 10:20 01 5, 2011 10:20

Trackback URL : http://develop.sunshiny.co.kr/trackback/579

Leave a comment

« Previous : 1 : ... 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : ... 381 : Next »

Recent Posts

  1. Oracle - 바인드 변수에 대하여(테스트)
  2. Oracle - 디폴트 롤, DBA, CONNECT,...
  3. Oracle - 권한 및 롤 관리
  4. Oracle - SQL*PLUS의 SYSDBA 접근 제어
  5. Oracle - PFILE, SPFILE 에 관하여

Recent Comments

  1. 네 답글 고맙습니다. 좋은 한주 보... sunshiny 05 14,
  2. 좋은 정보 잘 살펴보고 갑니다. ememoho 05 12,
  3. 네. 고맙습니다^^ 행복한 한해 보... sunshiny 01 16,
  4. sunshiny님. 안녕하세요... 올려 주... yihans 01 16,
  5. 답글 주셔서 고맙습니다^^ 소스 복... sunshiny 01 11,

Recent Trackbacks

  1. 윈도우 cmd 명령어 팁 월풍도원(月風道院) - Delight on th... %M
  2. 파일 압축 Like RadioHead %M
  3. Mysql - mysql 설치후 Character set... 멀고 가까움이 다르기 때문 %M

Calendar

«   05 2012   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. Oracle All Documentation
  4. 엑셈
  5. 오라클 클럽
  6. 네이버개발자센터
  7. API - Java
  8. API - Spring
  9. Java Community
  10. Reference - Spring
  11. 스프링사용자
  12. 자바소스
  13. 자바지기
  14. Ready System
  15. Solaris Freeware
  16. Linux-Site
  17. RedHat Korea
  18. 윈디하나의 솔라나라

Site Stats

TOTAL 245430 HIT
TODAY 136 HIT
YESTERDAY 139 HIT