import java.io.*

import java.awt.Font

import java.awt.Color

improt java.awt.GradientPaint

       

import org.jfree.chart.ChartFactory

import org.jfree.chart.ChartPanel

import org.jfree.chart.JFreeChart

import org.jfree.chart.axis.NumberAxis

import org.jfree.chart.plot.PlotOrientation

import org.jfree.chart.plot.XYPlot

import org.jfree.chart.ChartRenderingInfo

import org.jfree.chart.ChartUtilities

import org.jfree.chart.plot.CategoryPlot

       

import org.jfree.data.xy.MatrixSeriesCollection>

import org.jfree.data.xy.NormalizedMatrixSeries

import org.jfree.ui.ApplicationFrame

import org.jfree.ui.RefineryUtilities


  final int SIZE = 20;

  final MatrixSeriesCollection dataset = new MatrixSeriesCollection();

  

  // value, x, y

  int[][] itmes = {

       {200, 3 , 12}

      ,{250, 8 , 5 }

      ,{80 , 14, 16}

      ,{50 , 18, 4 }

  };

  

  int nSum = 0;

  for (int i = 0; i < itmes.length; i++ ) {

    nSum += itmes[i][0];

  }

  

  for (int i = 0; i < itmes.length; i++) {

    NormalizedMatrixSeries newSeries =

              new NormalizedMatrixSeries("대카테고리" + (i+1), SIZE, SIZE);

      newSeries.update(itmes[i][2], itmes[i][1], itmes[i][0]);

    newSeries.setScaleFactor(SIZE*((float)itmes[i][0]/nSum));

    

    dataset.addSeries(newSeries);

  }

  

  final JFreeChart chart = ChartFactory.createBubbleChart(

      "Bubble Chart"

      , "X축"

      , "Y축"

      , dataset

      , PlotOrientation.VERTICAL

      , true

      , true

      , false);

  

  chart.setBackgroundPaint(Color.white);

  chart.setTitle("제목");

  

  // 제목

  chart.getTitle().setFont(new Font("돋움", Font.BOLD, 15));

  // 범례

  chart.getLegend().setItemFont(new Font("돋움", Font.PLAIN, 12));


  final XYPlot plot = chart.getXYPlot();

  

  Font font = plot.getDomainAxis().getLabelFont();

  // X축 라벨

  plot.getDomainAxis().setLabelFont(new Font("돋움", font.getStyle(), font.getSize()));

  // X축 도메인

  plot.getDomainAxis().setTickLabelFont(new Font("돋움", font.getStyle(), 10));

  

  font = plot.getRangeAxis().getLabelFont();

  // Y축 라벨

  plot.getRangeAxis().setLabelFont(new Font("돋움", font.getStyle(), font.getSize()));

  // Y축 범위

  plot.getRangeAxis().setTickLabelFont(new Font("돋움", font.getStyle(), 10));

  

  //final XYPlot plot = chart.getXYPlot();

  plot.setForegroundAlpha(0.5f);

  

  final NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();

  //domainAxis.setLowerBound(-0.5);

  domainAxis.setLowerBound(0);

  

  final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();

  

  // rangeAxis.setInverted(true);  // uncoment to reproduce a bug in jFreeChart

  //rangeAxis.setLowerBound(-0.5);

  rangeAxis.setLowerBound(0);

  

  // 파일 저장

  ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

  String fileName= "C:/" + "bubbleChart.jpg";

  ChartUtilities.saveChartAsJPEG(new File(fileName),chart,600,400,info);


'Java > jFreeChart' 카테고리의 다른 글

[jFreeChart] jFreeChart (Stacked Chart) 한글깨짐 문제  (0) 2011.08.26
posted by 뚱2


  import org.jfree.chart.ChartFactory

  import org.jfree.chart.ChartFrame

  import org.jfree.chart.ChartUtilities

  import org.jfree.chart.JFreeChart

  import org.jfree.chart.plot.PlotOrientation

  import org.jfree.chart.plot.CategoryPlot

  import org.jfree.chart.ChartRenderingInfo

  import org.jfree.chart.entity.StandardEntityCollection

  import org.jfree.data.xy.*

  import org.jfree.data.category.DefaultCategoryDataset

  // 데이타셋

  DefaultCategoryDataset dataset = new DefaultCategoryDataset();

  

  int[] nCatSum = new int[]{0, 0, 0, 0};

  

  for (int i=0; i < 12; i++) {

    for (int j=0; j < nCatSum.length; j++) {

      dataset.addValue(nCatSum[j], "카테고리"+(j+1), ""+(i+1)+"월");

      nCatSum[j] += i+j;

    }

  }


  // 차트

  JFreeChart chart = ChartFactory.createStackedBarChart(

      "Bar Chart"

      , "X축"

      , "Y축"

      , dataset

      , PlotOrientation.VERTICAL

      , true

      , true

      , false);

  

  chart.setBackgroundPaint(java.awt.Color.white);

  chart.setTitle("제목");

  

  ////////////////////////////////////////////////////////////////

  // 한글 깨짐 해결

  

  // 제목

  chart.getTitle().setFont(new Font("돋움", Font.BOLD, 15));

  // 범례

  chart.getLegend().setItemFont(new Font("돋움", Font.PLAIN, 10));

  

  CategoryPlot plot = chart.getCategoryPlot();

  

  Font font = plot.getDomainAxis().getLabelFont();

  // X축 라벨

  plot.getDomainAxis().setLabelFont(new Font("돋움", font.getStyle(), font.getSize()));

  // X축 도메인

  plot.getDomainAxis().setTickLabelFont(new Font("돋움", font.getStyle(), 10));

  

  font = plot.getRangeAxis().getLabelFont();

  // Y축 라벨

  plot.getRangeAxis().setLabelFont(new Font("돋움", font.getStyle(), font.getSize()));

  // Y축 범위

  plot.getRangeAxis().setTickLabelFont(new Font("돋움", font.getStyle(), 10));


  

  // 파일 저장

  ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

  String fileName= "C:/" + "stactedChart.jpg";

  ChartUtilities.saveChartAsJPEG(new File(fileName),chart,800,450,info);


'Java > jFreeChart' 카테고리의 다른 글

[jFreeChart] jFreeChart (Bubble Chart ) 사용법  (0) 2011.08.29
posted by 뚱2