百度空间 | 百度首页 
               
 
查看文章
 
基于jfreechart开发雷达图,条形,折线,柱状图--测试调用
2008-09-27 15:54

/**
* ChartToImage.java
*
* Copyright 2008 NIEC. All rights reserved.
* Use is subject to license terms.
*
* AUTHOR: WangMin
* SINCE: JDK 1.5 OR JDK 1.6
* VERSION: V2.0
* DATE: 2008-8-22
*
* LAST MODIFY:
* USER:
* REMARK:
*
* MODIFY:
* USER:
* REMARK:
*
*/
package org.niec.chartservice.test;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.filechooser.FileFilter;

import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.PolarPlot;
import org.jfree.chart.renderer.PolarItemRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.xy.DefaultXYItemRenderer;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.TextAnchor;

import org.niec.chartservice.chart.ChartCreater;
import org.niec.chartservice.chart.WMRadarPlotCreater;
import org.niec.chartservice.dataset.ChartDataSet;
import org.niec.chartservice.dataset.model.CategoryDatasetModel;
import org.niec.chartservice.dataset.model.XYSeriesCollectionModel;
import org.niec.chartservice.label.CreateCategoryItemLabel;


/**
* @author WangMin
*
*/
public class ChartToImage {
    public void outputPNG(JFreeChart chart,File file)
    {
        try {
            ChartUtilities.saveChartAsPNG(file,chart,640,480);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String []args)
    {
       
     ChartDataSet chartdataset = new ChartDataSet();
        //柱形图,条形图,折线图Dataset
        DefaultCategoryDataset categorydataset = new DefaultCategoryDataset();
        for(int p=1;p<=3;p++)
        for(int index=1;index<=8;index++)
        {
            CategoryDatasetModel cdm = new CategoryDatasetModel(index*p,"对象"+p,"属性"+index);
            categorydataset.addValue(cdm.getValue(),cdm.getSeries(),cdm.getCategory());
        }
        chartdataset.setCategoryDataset(categorydataset);
       
        new ChartToImage().outputPNG(new ChartCreater().createCategoryChart("2D柱图", "category", "value", chartdataset.getCategoryDataset(), PlotOrientation.VERTICAL, true, true, false), new File(System.getProperty("user.dir")+"\\2D柱图.png"));
       
        JFreeChart zhu3D = new ChartCreater().createCategoryChart3D("3D柱图", "category", "value", chartdataset.getCategoryDataset(),PlotOrientation.VERTICAL, true, true, false);
        CategoryItemRenderer z3d_ren = zhu3D.getCategoryPlot().getRenderer();
        CreateCategoryItemLabel z3d_lab = new CreateCategoryItemLabel();
        ItemLabelPosition z3d_ilp = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER);
        z3d_ren.setPositiveItemLabelPosition(z3d_ilp);
        z3d_ren.setItemLabelGenerator(z3d_lab);      
        z3d_ren.setItemLabelsVisible(true);
        new ChartToImage().outputPNG(zhu3D, new File(System.getProperty("user.dir")+"\\3D柱图.png"));       
       
        new ChartToImage().outputPNG(new ChartCreater().createLineChart3D("3D折线", "category", "value", chartdataset.getCategoryDataset(), PlotOrientation.VERTICAL, true, true, false), new File(System.getProperty("user.dir")+"\\3D折线.png"));
       
        JFreeChart line2D = new ChartCreater().createLineChart("2D折线", "category", "value", chartdataset.getCategoryDataset(), PlotOrientation.VERTICAL, true, true, false);
        CategoryItemRenderer line2D_ren = line2D.getCategoryPlot().getRenderer();
        CreateCategoryItemLabel line2D_lab = new CreateCategoryItemLabel();
        ItemLabelPosition line2D_ilp = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER);
        line2D_ren.setPositiveItemLabelPosition(line2D_ilp);
        line2D_ren.setItemLabelGenerator(line2D_lab);      
        line2D_ren.setItemLabelsVisible(true);       
        new ChartToImage().outputPNG(line2D, new File(System.getProperty("user.dir")+"\\2D折线.png"));
       
        new ChartToImage().outputPNG(new ChartCreater().createBarChart("2D条图", "category", "value", chartdataset.getCategoryDataset(), PlotOrientation.VERTICAL, true, true, false), new File(System.getProperty("user.dir")+"\\2D条图.png"));       
       
        JFreeChart bar3D = new ChartCreater().createBarChart3D("3D条图", "指标项", "得分", chartdataset.getCategoryDataset(), PlotOrientation.VERTICAL, true, true, false);
        CategoryItemRenderer bar3D_ren = bar3D.getCategoryPlot().getRenderer();
        CreateCategoryItemLabel bar3D_lab = new CreateCategoryItemLabel();
        ItemLabelPosition bar3D_ilp = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_RIGHT);
        bar3D_ren.setPositiveItemLabelPosition(bar3D_ilp);
        bar3D_ren.setItemLabelGenerator(bar3D_lab);      
        bar3D_ren.setItemLabelsVisible(true);
        new ChartToImage().outputPNG(bar3D, new File(System.getProperty("user.dir")+"\\3D条图.png"));
       
       
        //雷达图数据集
        XYSeriesCollection seriesCollection = new XYSeriesCollection();
        for(int q=1;q<=5;q++)
        {
            XYSeriesCollectionModel xyscm = new XYSeriesCollectionModel("对象"+q,true);
            for(int index=10;index<=200;index+=10)
            {
                xyscm.add(index*360/200,index+q);

            }
            seriesCollection.addSeries(xyscm);
        }

        chartdataset.setXYSeriesCollection(seriesCollection);
        WMRadarPlotCreater wmrpc = new WMRadarPlotCreater();
        JFreeChart radarplot = wmrpc.createWMPolarChart("雷达图", chartdataset.getXYSeriesCollection(), true, true, false,
                new String[]{"信息化领导力","信息化基础建设","信息化应用与效果","服务管理与治理","信息化人力资源","信息化领导力","信息化基础建设","信息化应用与效果","服务管理与治理","信息化人力资源","信息化领导力","信息化基础建设","信息化应用与效果","服务管理与治理","信息化人力资源","信息化领导力","信息化基础建设","信息化应用与效果","服务管理与治理","信息化人力资源"});           
        new ChartToImage().outputPNG(radarplot, new File(System.getProperty("user.dir")+"\\雷达图.png"));

     JFrame f = new JFrame("Enhanced File Example");
   JPanel j = new FileChooserDemo();
   f.getContentPane().add(j, BorderLayout.CENTER);
   f.setSize(300, 200);
   f.setVisible(true);
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
class FileChooserDemo extends JPanel
{

class ExtensionFilter extends FileFilter
{
    private String extensions[];

    private String description;

    public ExtensionFilter(String description, String extension) {
     this(description, new String[] { extension });
    }

    public ExtensionFilter(String description, String extensions[]) {
     this.description = description;
     this.extensions = (String[]) extensions.clone();
    }

    public boolean accept(File file) {
     if (file.isDirectory()) {
      return true;
     }
     int count = extensions.length;
     String path = file.getAbsolutePath();
     for (int i = 0; i< count; i++) {
      String ext = extensions[i];
     /* if (path.endsWith(ext)&&(path.charAt(path.length() - ext.length()) == &apos.&apos)) {
          return true;
         }*/
        }
     return false;
    }
    public String getDescription() {
     return (description == null ? extensions[0] : description);
    }
}

public FileChooserDemo() {
   JButton jb = new JButton("Open File Viewer");
   add(jb);
   ActionListener listener = new ActionListener()
   {
    public void actionPerformed(ActionEvent e) {
     JFileChooser chooser = new JFileChooser(System.getProperty("user.dir"));
     /*FileFilter type1 = new ExtensionFilter("Java source", ".java");
     FileFilter type2 = new ExtensionFilter("Image files",
       new String[] { ".jpg", ".gif", "jpeg", "xbm" });
     FileFilter type3 = new ExtensionFilter("HTML files",
       new String[] { ".htm", ".html" });
     chooser.addChoosableFileFilter(type1);
     chooser.addChoosableFileFilter(type2);
     chooser.addChoosableFileFilter(type3);
     chooser.setAcceptAllFileFilterUsed(false);
     chooser.setFileFilter(type2);*/ // Initial filter setting
     int status = chooser.showOpenDialog(FileChooserDemo.this);
     if (status == JFileChooser.APPROVE_OPTION) {
      File f = chooser.getSelectedFile();
      System.out.println(f);
     }
    }
   };
   jb.addActionListener(listener);
}
}


类别:jfreechart&jacob and so on | 添加到搜藏 | 浏览() | 评论 (4)
 
最近读者:
 
网友评论:
1
2008-12-11 18:15 | 回复
用心了
 
2
2009-01-19 10:53 | 回复
org.niec在哪里能找到啊
 
4
2009-04-29 11:11 | 回复
你这个wmrpc代码能分享一下么,图是怎么画出来的, 我用SpiderWebPlot 画出的图,线条都是直线。
 
5
2009-05-05 11:35 | 回复
非常感谢!! 但你能不能把你自己封装的类都能分享一下吗??ChartCreater,WMRadarPlotCreater,XYSeriesCollectionModel,WMPolarPlot。
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu