本帖最后由 zhangya_815 于 2010-06-21 00:29:50 编辑

解决方案 »

  1.   

     有jchart要么? 我可以给你了代码的例子,和文档
      

  2.   

    网上大多是web开发方面的例子,所以来请大牛来了
      

  3.   

    JFreeChart tutorial (reprinted)
    http://www.screaming-penguin.com/node/4005
      

  4.   


    package com.dhc.telecom.reporting.util;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.RenderingHints;
    import java.io.File;
    import java.io.IOException;import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.CategoryAxis;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.axis.ValueAxis;
    import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
    import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
    import org.jfree.chart.labels.StandardXYItemLabelGenerator;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PiePlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.chart.renderer.category.BarRenderer;
    import org.jfree.chart.renderer.category.LineAndShapeRenderer;
    import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.general.DefaultPieDataset;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
    import org.jfree.data.xy.XYDataset;public class ChartManager {
    private File imageFile;
    private String imageFileName = ".\\chart.jpg";
    private JFreeChart freeChart;
    private CategoryDataset dataset;
    private DefaultPieDataset pieDataSet;
    private XYDataset xyDataset;
    private String title;
    private String xInfo="";
    private String yInfo="";


    /*定义各类图表所需的Dataset辅助*/
    TimeSeries vTimeSeries=null;
    TimeSeriesCollection vTimeSeriesCollection=null;

    public JFreeChart crateXYLineChart()
    {
    try
    {
    freeChart = ChartFactory.createXYLineChart(title, xInfo,yInfo,xyDataset, PlotOrientation.VERTICAL,
                    true,    
                    true,   
                    false); 
    freeChart.setBackgroundPaint(new Color(193, 193, 193));//设置背景色   
    freeChart.getLegend().setItemFont((new Font("宋体", Font.PLAIN, 12)));//图示字体大小   
               
            //获得plot对象   
            XYPlot xyplot = freeChart.getXYPlot();   
            xyplot.setBackgroundPaint(new Color(233, 233, 233));// 设置数据区(中间部分背景色)   
            xyplot.setDomainGridlinesVisible(true);// x轴分类轴网格是否可见   
            xyplot.setDomainGridlinePaint(Color.BLACK);//x轴虚线色彩   
            xyplot.setRangeGridlinesVisible(true);// y轴数据轴网格是否可见   
            xyplot.setRangeGridlinePaint(Color.red);//y轴虚线色彩   
            xyplot.setDomainGridlinesVisible(true);// x轴分类轴网格是否可见   
            xyplot.setDomainGridlinePaint(Color.WHITE);// 虚线色彩   
            xyplot.setRangeGridlinesVisible(true);// y轴数据轴网格是否可见   
            xyplot.setRangeGridlinePaint(Color.BLACK);// 虚线色彩   
               
                //配置字体         
            Font xlabelfont = new Font("宋体",Font.PLAIN,12) ;// x轴标题字体      
            Font xtickfont = new Font("宋体",Font.PLAIN,12) ;// x轴刻度字体      
            Font ylabelfont = new Font("宋体",Font.PLAIN,12) ;// Y轴标题字体      
            Font ytickfont = new Font("宋体",Font.PLAIN,12) ;// Y轴刻度字体      
            Font titleFont = new Font("宋体", Font.PLAIN , 25) ; // 图片标题       
            Font itemfont = new Font("宋体",Font.PLAIN,15) ;// 图示字体       
            xyplot.getDomainAxis().setLabelFont(xlabelfont); //x轴标题字体      
            xyplot.getDomainAxis().setTickLabelFont(xtickfont); //x轴刻度字体      
            xyplot.getRangeAxis().setLabelFont(ylabelfont);  //y轴外围字体      
            xyplot.getRangeAxis().setTickLabelFont(ytickfont); //y轴标题字体      
            freeChart.getTitle().setFont(titleFont);   //设置标题字体   
            freeChart.getLegend().setItemFont(itemfont); //设置最底下方框内的字体(图示Legend)      
            //抗锯齿关闭      
            freeChart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);      
      
            // 获取 x轴的操作:   
            ValueAxis valueAxis = xyplot.getDomainAxis();   
            valueAxis.setTickMarksVisible(false);   
            valueAxis.setTickMarkPaint(Color.red);//设置x轴刻度尺颜色   
            valueAxis.setLabelAngle(45.00d);//x轴标题旋转角度   
            valueAxis.setTickMarkInsideLength(5.2f);//刻度尺的长度   
            valueAxis.setTickMarkOutsideLength(5.5f);//刻度尺的长度 
            valueAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
         
            // 获取 y 轴操作:   
            NumberAxis numberAxis = (NumberAxis) xyplot.getRangeAxis();   
            numberAxis.setTickMarkPaint(Color.blue);   
            numberAxis.setTickMarksVisible(true);//设置图示是否显示   
            numberAxis.setLowerMargin(0.05);// 设置距离图片左端距离此时为10%  
            numberAxis.setUpperMargin(0.05);// 设置距离图片右端距离此时为百分之10 
            numberAxis.setLabelFont(new Font("黑体", Font.BOLD, 12));// Y轴标题字体   
    //         double rangeYtick = 5D; 
    //         numberAxis.setTickUnit(new NumberTickUnit(rangeYtick));//y轴间隔为0.1
            numberAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 12));   
    //         NumberFormat numberformat = new DecimalFormat("00%");   
    //         numberAxis.setNumberFormatOverride(numberformat);// 设置y轴以百分比方式显示   
    //   
            //绘制单元的设置   
            XYLineAndShapeRenderer XYLineAndShapeRenderer = (XYLineAndShapeRenderer) xyplot.getRenderer();   
            XYLineAndShapeRenderer.setBaseShapesVisible(true); // series点(即数据点)可见   
            XYLineAndShapeRenderer.setBaseLinesVisible(true); // series点(即数据点)间有连线可见   
            XYLineAndShapeRenderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());   
            XYLineAndShapeRenderer.setBaseItemLabelsVisible(true);//显示折点数据
            this.imageFile = new File(this.imageFileName);
            System.out.println("here111=="+this.imageFileName);
    // ChartUtilities.saveChartAsJPEG(imageFile,100,freeChart,800,600);
            return this.freeChart;
    }
    catch (Exception e) 
    {
    System.out.println("IO操作异常!");
    e.printStackTrace();
    return null;
    }
    }


    public void creatLineChart()
    {
    try
    {
    freeChart = ChartFactory.createLineChart(this.title,this.xInfo,this.yInfo,this.dataset,PlotOrientation.VERTICAL,true,false,false);
    CategoryPlot plot = freeChart.getCategoryPlot();
    ValueAxis rangeAxis = plot.getRangeAxis();
    rangeAxis.setUpperMargin(0.1);
    rangeAxis.setLowerMargin(0.1);
    plot.setRangeAxis(rangeAxis);
    //set the render
    LineAndShapeRenderer renderer = new LineAndShapeRenderer();
    renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12));
    renderer.setItemLabelsVisible(true);
    plot.setRenderer(renderer);
    this.imageFile = new File(this.imageFileName);
    ChartUtilities.saveChartAsJPEG(imageFile,100,freeChart,800,600);       
    }
    catch (IOException e) 
    {
    System.out.println("IO操作异常!");
    e.printStackTrace();

    }
    }

    public JFreeChart creatPieChart() throws IOException {
    // 创建PieChart对象
    this.freeChart = ChartFactory.createPieChart3D(this.title, this.pieDataSet,
    true, true, false);
    Font font = new Font("宋体", Font.ITALIC, 12);
    PiePlot plot = (PiePlot) this.freeChart.getPlot();
    plot.setNoDataMessage("无数据可供显示!"); // 没有数据的时候显示的内容
    plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}: ({2})"));
    this.freeChart.getTitle().setFont(font);
    plot.setLabelFont(font);
    this.freeChart.getLegend().setItemFont(font);
    this.imageFile = new File(this.imageFileName);
    ChartUtilities.saveChartAsJPEG(imageFile,100,freeChart,800,600);
            System.out.println("here111=="+this.imageFileName);
    return this.freeChart;
    }

    public JFreeChart creatBarChart() throws IOException
    {
    freeChart = ChartFactory.createBarChart3D(this.title,this.xInfo,this.yInfo,this.dataset,PlotOrientation.VERTICAL,true,false,false);
    CategoryPlot plot = freeChart.getCategoryPlot();
    //set the domainAxis
    CategoryAxis domainAxis = plot.getDomainAxis();
    domainAxis.setLowerMargin(0.1);
    domainAxis.setUpperMargin(0.1);
    plot.setDomainAxis(domainAxis);
    //set the rangeAxis
    ValueAxis rangeAxis = plot.getRangeAxis();
    rangeAxis.setUpperMargin(0.1);
    rangeAxis.setLowerMargin(0.1);
    plot.setRangeAxis(rangeAxis);
    //set the render BarRenderer renderer = new BarRenderer();
    renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12));
    renderer.setItemLabelsVisible(true);
    plot.setRenderer(renderer);
    this.imageFile = new File(this.imageFileName);
    ChartUtilities.saveChartAsJPEG(imageFile,100,freeChart,800,600);
            System.out.println("here111=="+this.imageFileName);
    return this.freeChart;
    }

    public void saveAsFile() throws IOException
    {
    this.imageFile = new File(this.imageFileName);
    ChartUtilities.saveChartAsJPEG(imageFile,freeChart,800,600);
    }



    public void setChartTitle(String title) {
    this.title = title;
    }

    public void setXInfo(String info) {
    xInfo = info;
    }

    public void setChartYInfo(String info) {
    yInfo = info;
    }

    public void setImgFileName(String imageFileName) {
    this.imageFileName = imageFileName;
    }
    public XYDataset getXyDataset() {
    return xyDataset;
    }
    public void setXyDataset(XYDataset xyDataset) {
    this.xyDataset = xyDataset;
    }
    public DefaultPieDataset getPieDataSet() {
    return pieDataSet;
    }
    public void setPieDataSet(DefaultPieDataset pieDataSet) {
    this.pieDataSet = pieDataSet;
    }
    public CategoryDataset getDataset() {
    return dataset;
    }
    public void setDataset(CategoryDataset dataset) {
    this.dataset = dataset;
    }

    }
    这个类够你用了,折线图,饼状图和柱状图都有了
      

  5.   

    请问你这个是基于JFreeChart的那个版本的?
      

  6.   


    jfreechart-1.0.13
    应该怎么使用?  导入哪几个类?
      

  7.   


    jfreechart-1.0.13
    应该怎么使用? 导入哪几个类?到CSDN去下一个看看,有的。看看楼上的文章,就差不多了,
      

  8.   

    网上没有对应的jar包么?csdn下载里也应该有。其他的就是找官方的实例了。
      

  9.   

    这里有详细的介绍,应该对你有用:http://www.blogjava.net/chunkyo/archive/2007/01/13/jfreechat.html