加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

java生成各种统计图

(2015-05-06 16:16:05)
标签:

杂谈

 

目录:

一、图形及代码:

1、饼形图

2.1、普通柱形图

2.2、XYDataset柱形图

3、折线图

4、区域图

5、时序图

6、组合图

二web应用jfreeChar(区域图)

三:DataUtils类代码(所有代码中均应用的类,得到随即数据)

一、图形及代码

1、饼形图

 

 

  1.  

  2. import java.awt.Font;  

  3. import java.io.FileOutputStream;  

  4. import java.io.IOException;  

  5. import java.io.OutputStream;  

  6. import org.jfree.chart.ChartFactory;  

  7. import org.jfree.chart.ChartUtilities;  

  8. import org.jfree.chart.JFreeChart;  

  9. import org.jfree.chart.plot.PiePlot;  

  10. import org.jfree.data.general.DefaultPieDataset;  

  11. import org.jfree.data.general.PieDataset;  

  12.  

  13. public class PieChart {  

  14.    public static void main(String[] agrs) throws IOException{  

  15.        // 打开一个输出流  

  16.        OutputStream outputStream=new FileOutputStream("PieChart.png");  

  17.        // 获取数据集对象  

  18.        PieDataset dataset = createPieDataset();  

  19.        // 创建图形对象  

  20.        JFreeChart jfreechart = ChartFactory.createPieChart3D("08年图书销量排行榜",  

  21.                dataset, true, true, false);  

  22.        // 获得图表区域对象  

  23.        PiePlot pieplot = (PiePlot) jfreechart.getPlot();  

  24.        // 设置图表区域的标签字体  

  25.        pieplot.setLabelFont(new Font("宋体", 0, 12));  

  26.        // 设置图表区域无数据时的默认显示文字  

  27.        pieplot.setNoDataMessage("没有销售数据");  

  28.        // 设置图表区域不是圆形,由于是3D的饼形图,建议设置为false  

  29.        pieplot.setCircular(false);  

  30.        // 设置图表区域文字与图表区域的间隔距离,0.02表示2%  

  31.        pieplot.setLabelGap(0.02D);  

  32.        // 将图表已数据流的方式返回给客户端  

  33.        ChartUtilities.writeChartAsPNG(outputStream, jfreechart,  

  34.                500, 270);  

  35.    }  

  36.      

  37.    private static PieDataset createPieDataset() {  

  38.        // 创建饼形图数据集对象  

  39.        DefaultPieDataset defaultpiedataset = new DefaultPieDataset();  

  40.        // 分别图形区域的说明和数据  

  41.        defaultpiedataset.setValue("JAVA", DataUtils.getRandomData());  

  42.        defaultpiedataset.setValue("C/C++", DataUtils.getRandomData());  

  43.        defaultpiedataset.setValue("PHP", DataUtils.getRandomData());  

  44.        defaultpiedataset.setValue("JavaScript", DataUtils.getRandomData());  

  45.        defaultpiedataset.setValue("Ajax", DataUtils.getRandomData());  

  46.        return defaultpiedataset;  

  47.    }  

  48.  

  49. }  

     

package com.helloweenvsfei.jfreechart;

import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

public class PieChart {
        public static void main(String[] agrs) throws IOException{
                // 打开一个输出流
                OutputStream outputStream=new FileOutputStream("PieChart.png");
                // 获取数据集对象
                PieDataset dataset = createPieDataset();
                // 创建图形对象
                JFreeChart jfreechart = ChartFactory.createPieChart3D("08年图书销量排行榜",
                                dataset, true, true, false);
                // 获得图表区域对象
                PiePlot pieplot = (PiePlot) jfreechart.getPlot();
                // 设置图表区域的 签字体
                pieplot.setLabelFont(new Font("宋体", 0, 12));
                // 设置图表区域 数据时的默认显示文字
                pieplot.setNoDataMessage("没有销售数据");
                // 设置图表区域不是圆形,由于是3D的饼形图,建议设置为false
                pieplot.setCircular(false);
                // 设置图表区域文字与图表区域的间隔距离,0.02表示2%
                pieplot.setLabelGap(0.02D);
                // 将图表已数据流的方式返回给客户端
                ChartUtilities.writeChartAsPNG(outputStream, jfreechart,
                                500, 270);
        }
        
        private static PieDataset createPieDataset() {
                // 创建饼形图数据集对象
                DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
                // 分别图形区域的说明和数据
                defaultpiedataset.setValue("JAVA", DataUtils.getRandomData());
                defaultpiedataset.setValue("C/C++", DataUtils.getRandomData());
                defaultpiedataset.setValue("PHP", DataUtils.getRandomData());
                defaultpiedataset.setValue("JavaScript", DataUtils.getRandomData());
                defaultpiedataset.setValue("Ajax", DataUtils.getRandomData());
                return defaultpiedataset;
        }

}


效果:

 

2.1、普通柱形图

 

  1. import java.io.FileOutputStream;  

  2. import java.io.IOException;  

  3. import java.io.OutputStream;  

  4. import org.jfree.chart.ChartFactory;  

  5. import org.jfree.chart.ChartUtilities;  

  6. import org.jfree.chart.JFreeChart;  

  7. import org.jfree.chart.axis.CategoryAxis;  

  8. import org.jfree.chart.axis.CategoryLabelPositions;  

  9. import org.jfree.chart.plot.CategoryPlot;  

  10. import org.jfree.chart.plot.PlotOrientation;  

  11. import org.jfree.chart.renderer.category.BarRenderer3D;  

  12. import org.jfree.data.category.CategoryDataset;  

  13. import org.jfree.data.category.DefaultCategoryDataset;  

  14.  

  15. public class BarChart {  

  16.    public static void main(String[] agrs) throws IOException{  

  17.        // 打开一个输出流  

  18.        OutputStream outputStream=new FileOutputStream("BarChart.png");  

  19.        // 获取数据集对象  

  20.        CategoryDataset dataset = createDataset();  

  21.        // 创建图形对象  

  22.        JFreeChart jfreechart = ChartFactory.createBarChart3D("08年图书销售量排名",  

  23.                "按季度", "销量", dataset, PlotOrientation.VERTICAL, true, true,  

  24.                false);  

  25.        // 获得图表区域对象  

  26.        CategoryPlot categoryPlot = (CategoryPlot) jfreechart.getPlot();  

  27.        // 设置网格线可见  

  28.        categoryPlot.setDomainGridlinesVisible(true);  

  29.        // 获得x轴对象  

  30.        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();  

  31.        // 设置x轴显示的分类名称的显示位置,如果不设置则水平显示  

  32.        // 设置后,可以斜像显示,但分类角度,图表空间有限时,建议采用  

  33.        categoryAxis.setCategoryLabelPositions(CategoryLabelPositions  

  34.                .createUpRotationLabelPositions(0.39269908169872414D));  

  35.        categoryAxis.setCategoryMargin(0.0D);  

  36.        // 获显示图形对象  

  37.        BarRenderer3D barRenderer3d = (BarRenderer3D) categoryPlot  

  38.                .getRenderer();  

  39.        // 设置不显示边框线  

  40.        barRenderer3d.setDrawBarOutline(false);  

  41.        // 将图表已数据流的方式返回给客户端  

  42.        ChartUtilities.writeChartAsPNG(outputStream, jfreechart,  

  43.                500, 270);  

  44.    }  

  45.  

  46.      

  47.    private static CategoryDataset createDataset() {  

  48.        // 时间维度  

  49.        String[] category1 = { "第一季度", "第二季度", "第三季度", "第四季度" };  

  50.        // 分类维度  

  51.        String[] category2 = { "JAVA", "C/C++", "PHP" };  

  52.        DefaultCategoryDataset defaultdataset = new DefaultCategoryDataset();  

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

  54.            String category = category1[i];  

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

  56.                String cat = category2[j];  

  57.                // 模拟添加数据  

  58.                defaultdataset.addValue(DataUtils.getRandomData(), cat, category);  

  59.            }  

  60.        }  

  61.        return defaultdataset;  

  62.    }  

  63. }  

     

package com.helloweenvsfei.jfreechart;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
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.CategoryLabelPositions;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class BarChart {
        public static void main(String[] agrs) throws IOException{
                // 打开一个输出流
                OutputStream outputStream=new FileOutputStream("BarChart.png");
                // 获取数据集对象
                CategoryDataset dataset = createDataset();
                // 创建图形对象
                JFreeChart jfreechart = ChartFactory.createBarChart3D("08年图书销售量排名",
                                "按季度", "销量", dataset, PlotOrientation.VERTICAL, true, true,
                                false);
                // 获得图表区域对象
                CategoryPlot categoryPlot = (CategoryPlot) jfreechart.getPlot();
                // 设置网 线可见
                categoryPlot.setDomainGridlinesVisible(true);
                // 获得x轴对象
                CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
                // 设置x轴显示的分类名称的显示位置,如果不设置则水平显示
                // 设置后,可以斜像显示,但分类角度,图表空间有限时,建议采用
                categoryAxis.setCategoryLabelPositions(CategoryLabelPositions
                                .createUpRotationLabelPositions(0.39269908169872414D));
                categoryAxis.setCategoryMargin(0.0D);
                // 获显示图形对象
                BarRenderer3D barRenderer3d = (BarRenderer3D) categoryPlot
                                .getRenderer();
                // 设置不显示边框线
                barRenderer3d.setDrawBarOutline(false);
                // 将图表已数据流的方式返回给客户端
                ChartUtilities.writeChartAsPNG(outputStream, jfreechart,
                                500, 270);
        }

        
        private static CategoryDataset createDataset() {
                // 时间维度
                String[] category1 = { "第一季度", "第二季度", "第三季度", "第四季度" };
                // 分类维度
                String[] category2 = { "JAVA", "C/C++", "PHP" };
                DefaultCategoryDataset defaultdataset = new DefaultCategoryDataset();
                for (int i = 0; i < category1.length; i++) {
                        String category = category1[i];
                        for (int j = 0; j < category2.length; j++) {
                                String cat = category2[j];
                                // 模拟添 数据
                                defaultdataset.addValue(DataUtils.getRandomData(), cat, category);
                        }
                }
                return defaultdataset;
        }
}


效果:

 


2.2、XYDataset柱形图

 

 

  1.  

  2. import java.awt.Color;  

  3. import java.io.FileOutputStream;  

  4. import java.io.IOException;  

  5. import java.io.OutputStream;  

  6.  

  7. import org.jfree.chart.ChartFactory;  

  8. import org.jfree.chart.ChartUtilities;  

  9. import org.jfree.chart.JFreeChart;  

  10. import org.jfree.chart.plot.PlotOrientation;  

  11. import org.jfree.chart.plot.XYPlot;  

  12. import org.jfree.chart.renderer.xy.XYBarRenderer;  

  13. import org.jfree.data.xy.IntervalXYDataset;  

  14. import org.jfree.data.xy.XYBarDataset;  

  15. import org.jfree.data.xy.XYSeries;  

  16. import org.jfree.data.xy.XYSeriesCollection;  

  17. public class BarChart2 {  

  18.    public static void main(String[] agrs) throws IOException{  

  19.        // 打开一个输出流  

  20.        OutputStream outputStream=new FileOutputStream("BarChart2.png");  

  21.        // 获取数据集对象  

  22.        IntervalXYDataset dataset = createDataset();  

  23.        // 创建图形对象  

  24.        JFreeChart jfreechart = ChartFactory.createXYBarChart("08年图书销售量", null,  

  25.                false, "销量", dataset, PlotOrientation.VERTICAL, true, false,  

  26.                false);  

  27.        // 设置背景为白色  

  28.        jfreechart.setBackgroundPaint(Color.white);  

  29.        // 获得图表区域对象  

  30.        XYPlot xyplot = (XYPlot) jfreechart.getPlot();  

  31.        // 设置区域对象背景为灰色  

  32.        xyplot.setBackgroundPaint(Color.lightGray);  

  33.        // 设置区域对象网格线调为白色  

  34.        xyplot.setDomainGridlinePaint(Color.white);  

  35.        xyplot.setRangeGridlinePaint(Color.white);  

  36.        // 获显示图形对象  

  37.        XYBarRenderer xybarrenderer = (XYBarRenderer) xyplot.getRenderer();  

  38.        // 设置不显示边框线  

  39.        xybarrenderer.setDrawBarOutline(false);  

  40.  

  41.        // 将图表已数据流的方式返回给客户端  

  42.        ChartUtilities.writeChartAsPNG(outputStream, jfreechart,  

  43.                500, 270);  

  44.    }  

  45.  

  46.      

  47.    private static IntervalXYDataset createDataset() {  

  48.        // 创建基本数据  

  49.        XYSeries xyseries = new XYSeries("JAVA");  

  50.        XYSeries xyseries1 = new XYSeries("PHP");  

  51.        for (int i = 1; i <= 12; i++) {  

  52.            // 添加数据  

  53.            xyseries.add(i,DataUtils.getRandomData());  

  54.            xyseries1.add(i,DataUtils.getRandomData());  

  55.        }  

  56.        XYSeriesCollection xyseriescollection = new XYSeriesCollection();  

  57.        xyseriescollection.addSeries(xyseries);  

  58.        xyseriescollection.addSeries(xyseries1);  

  59.        return new XYBarDataset(xyseriescollection, 0.90000000000000002D);  

  60.    }  

  61. }  

  62. </span>  

package com.helloweenvsfei.jfreechart;

import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.XYBarDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class BarChart2 {
        public static void main(String[] agrs) throws IOException{
                // 打开一个输出流
                OutputStream outputStream=new FileOutputStream("BarChart2.png");
                // 获取数据集对象
                IntervalXYDataset dataset = createDataset();
                // 创建图形对象
                JFreeChart jfreechart = ChartFactory.createXYBarChart("08年图书销售量", null,
                                false, "销量", dataset, PlotOrientation.VERTICAL, true, false,
                                false);
                // 设置背景为白色
                jfreechart.setBackgroundPaint(Color.white);
                // 获得图表区域对象
                XYPlot xyplot = (XYPlot) jfreechart.getPlot();
                // 设置区域对象背景为灰色
                xyplot.setBackgroundPaint(Color.lightGray);
                // 设置区域对象网 线调为白色
                xyplot.setDomainGridlinePaint(Color.white);
                xyplot.setRangeGridlinePaint(Color.white);
                // 获显示图形对象
                XYBarRenderer xybarrenderer = (XYBarRenderer) xyplot.getRenderer();
                // 设置不显示边框线
                xybarrenderer.setDrawBarOutline(false);

                // 将图表已数据流的方式返回给客户端
                ChartUtilities.writeChartAsPNG(outputStream, jfreechart,
                                500, 270);
        }

        
        private static IntervalXYDataset createDataset() {
                // 创建基本数据
                XYSeries xyseries = new XYSeries("JAVA");
                XYSeries xyseries1 = new XYSeries("PHP");
                for (int i = 1; i <= 12; i++) {
                        // 添 数据
                        xyseries.add(i,DataUtils.getRandomData());
                        xyseries1.add(i,DataUtils.getRandomData());
                }
                XYSeriesCollection xyseriescollection = new XYSeriesCollection();
                xyseriescollection.addSeries(xyseries);
                xyseriescollection.addSeries(xyseries1);
                return new XYBarDataset(xyseriescollection, 0.90000000000000002D);
        }
}

效果:

 


3、折线图

 

 

  1.  

  2. import java.awt.BasicStroke;  

  3. import java.awt.Color;  

  4. import java.awt.Font;  

  5. import java.io.FileOutputStream;  

  6. import java.io.IOException;  

  7. import java.io.OutputStream;  

  8. import java.util.Date;  

  9. import org.jfree.chart.ChartFactory;  

  10. import org.jfree.chart.ChartUtilities;  

  11. import org.jfree.chart.JFreeChart;  

  12. import org.jfree.chart.plot.CategoryPlot;  

  13. import org.jfree.chart.plot.PlotOrientation;  

  14. import org.jfree.chart.renderer.category.LineAndShapeRenderer;  

  15. import org.jfree.chart.title.TextTitle;  

  16. import org.jfree.data.category.CategoryDataset;  

  17. import org.jfree.data.category.DefaultCategoryDataset;  

  18. import org.jfree.ui.HorizontalAlignment;  

  19. import org.jfree.ui.RectangleEdge;  

  20.  

  21. public class LineChart {  

  22.    public static void main(String[] agrs) throws IOException{  

  23.  

  24.        // 打开一个输出流  

  25.        OutputStream outputStream=new FileOutputStream("LineChart.png");  

  26.  

  27.        // 获取数据集对象  

  28.        CategoryDataset dataset = createDataset();  

  29.        // 创建图形对象  

  30.        JFreeChart jfreechart = ChartFactory.createLineChart("08年图书销售量",  

  31.                null, "销售量", dataset, PlotOrientation.VERTICAL, false, true,  

  32.                false);  

  33.        // 设置图表的子标题  

  34.        jfreechart.addSubtitle(new TextTitle("按月份"));  

  35.        // 创建一个标题  

  36.        TextTitle texttitle = new TextTitle("日期: " + new Date());  

  37.        // 设置标题字体  

  38.        texttitle.setFont(new Font("黑体", 0, 10));  

  39.        // 设置标题向下对齐  

  40.        texttitle.setPosition(RectangleEdge.BOTTOM);  

  41.        // 设置标题向右对齐  

  42.        texttitle.setHorizontalAlignment(HorizontalAlignment.RIGHT);  

  43.        // 添加图表的子标题  

  44.        jfreechart.addSubtitle(texttitle);  

  45.        // 设置图表的背景色为白色  

  46.        jfreechart.setBackgroundPaint(Color.white);  

  47.        // 获得图表区域对象  

  48.        CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();  

  49.        categoryplot.setBackgroundPaint(Color.lightGray);  

  50.        categoryplot.setRangeGridlinesVisible(false);  

  51.        // 获显示线条对象  

  52.        LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot  

  53.                .getRenderer();  

  54.        lineandshaperenderer.setBaseShapesVisible(true);  

  55.        lineandshaperenderer.setDrawOutlines(true);  

  56.        lineandshaperenderer.setUseFillPaint(true);  

  57.        lineandshaperenderer.setBaseFillPaint(Color.white);  

  58.        // 设置折线加粗  

  59.        lineandshaperenderer.setSeriesStroke(0, new BasicStroke(3F));  

  60.        lineandshaperenderer.setSeriesOutlineStroke(0, new BasicStroke(2.0F));  

  61.        // 设置折线拐点  

  62.        lineandshaperenderer.setSeriesShape(0,  

  63.                new java.awt.geom.Ellipse2D.Double(-5D, -5D, 10D, 10D));  

  64.          

  65.        // 将图表已数据流的方式返回给客户端  

  66.        ChartUtilities.writeChartAsPNG(outputStream, jfreechart,  

  67.                500, 270);  

  68.    }  

  69.      

  70.      

  71.    private static CategoryDataset createDataset() {  

  72.        DefaultCategoryDataset defaultdataset = new DefaultCategoryDataset();  

  73.        for (int i = 1; i <= 12; i++) {  

  74.            defaultdataset.addValue(DataUtils.getRandomData(), "JAVA", i + "月");  

  75.            defaultdataset.addValue(DataUtils.getRandomData(), "PHP", i + "月");  

  76.  

  77.        }  

  78.        return defaultdataset;  

  79.    }  

  80.  

  81. }  

     

package com.helloweenvsfei.jfreechart;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.HorizontalAlignment;
import org.jfree.ui.RectangleEdge;

public class LineChart {
        public static void main(String[] agrs) throws IOException{

                // 打开一个输出流
                OutputStream outputStream=new FileOutputStream("LineChart.png");

                // 获取数据集对象
                CategoryDataset dataset = createDataset();
                // 创建图形对象
                JFreeChart jfreechart = ChartFactory.createLineChart("08年图书销售量",
                                null, "销售量", dataset, PlotOrientation.VERTICAL, false, true,
                                false);
                // 设置图表的子 题
                jfreechart.addSubtitle(new TextTitle("按月份"));
                // 创建一个 题
                TextTitle texttitle = new TextTitle("日期: " + new Date());
                // 设置 题字体
                texttitle.setFont(new Font("黑体", 0, 10));
                // 设置 题向下对齐
                texttitle.setPosition(RectangleEdge.BOTTOM);
                // 设置 题向右对齐
                texttitle.setHorizontalAlignment(HorizontalAlignment.RIGHT);
                // 添 图表的子 题
                jfreechart.addSubtitle(texttitle);
                // 设置图表的背景色为白色
                jfreechart.setBackgroundPaint(Color.white);
                // 获得图表区域对象
                CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
                categoryplot.setBackgroundPaint(Color.lightGray);
                categoryplot.setRangeGridlinesVisible(false);
                // 获显示线条对象
                LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot
                                .getRenderer();
                lineandshaperenderer.setBaseShapesVisible(true);
                lineandshaperenderer.setDrawOutlines(true);
                lineandshaperenderer.setUseFillPaint(true);
                lineandshaperenderer.setBaseFillPaint(Color.white);
                // 设置折线 粗
                lineandshaperenderer.setSeriesStroke(0, new BasicStroke(3F));
                lineandshaperenderer.setSeriesOutlineStroke(0, new BasicStroke(2.0F));
                // 设置折线拐点
                lineandshaperenderer.setSeriesShape(0,
                                new java.awt.geom.Ellipse2D.Double(-5D, -5D, 10D, 10D));
                
                // 将图表已数据流的方式返回给客户端
                ChartUtilities.writeChartAsPNG(outputStream, jfreechart,
                                500, 270);
        }
        
        
        private static CategoryDataset createDataset() {
                DefaultCategoryDataset defaultdataset = new DefaultCategoryDataset();
                for (int i = 1; i <= 12; i++) {
                        defaultdataset.addValue(DataUtils.getRandomData(), "JAVA", i + "月");
                        defaultdataset.addValue(DataUtils.getRandomData(), "PHP", i + "月");

                }
                return defaultdataset;
        }

}

效果 :


 

4、区域图

  

  1. import java.awt.Color;   

  2. import java.io.FileOutputStream;  

  3. import java.io.IOException;  

  4. import java.io.OutputStream;  

  5.  

  6.  

  7. import org.jfree.chart.ChartFactory;  

  8. import org.jfree.chart.ChartUtilities;  

  9. import org.jfree.chart.JFreeChart;  

  10. import org.jfree.chart.axis.CategoryAxis;  

  11. import org.jfree.chart.axis.CategoryLabelPositions;  

  12. import org.jfree.chart.plot.CategoryPlot;  

  13. import org.jfree.chart.plot.PlotOrientation;  

  14. import org.jfree.data.category.CategoryDataset;  

  15. import org.jfree.data.category.DefaultCategoryDataset;  

  16. import org.jfree.ui.RectangleInsets;  

  17.  

  18. public class AreaChart {  

  19.    public static void main(String[] agrs) throws IOException{  

  20.        // 打开一个输出流  

  21.        OutputStream outputStream=new FileOutputStream("AreaChart.png");  

  22.          

  23.        // 获取数据集对象  

  24.        CategoryDataset dataset = createDataset();  

  25.        // 创建图形对象  

  26.        JFreeChart jfreechart = ChartFactory.createAreaChart("08年图书销售量排名",  

  27.                "按季度", "销量", dataset, PlotOrientation.VERTICAL, true, true,  

  28.                false);  

  29.        // 获得图表区域对象  

  30.        CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();  

  31.        //设置前景色为50%透明  

  32.        categoryplot.setForegroundAlpha(0.5F);  

  33.        //设置X轴偏移量  

  34.        categoryplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));  

  35.        //设置北景色为浅灰色  

  36.        categoryplot.setBackgroundPaint(Color.lightGray);  

  37.        //设置显示网格线  

  38.        categoryplot.setDomainGridlinesVisible(true);  

  39.        //设置网格线为白色  

  40.        categoryplot.setDomainGridlinePaint(Color.white);  

  41.        //设置显示边界线  

  42.        categoryplot.setRangeGridlinesVisible(true);  

  43.        //设置显示边界线为白色  

  44.        categoryplot.setRangeGridlinePaint(Color.white);  

  45.        //获得X轴对象  

  46.        CategoryAxis categoryaxis = categoryplot.getDomainAxis();  

  47.        //设置X轴标签位置为45度角  

  48.        categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);  

  49.        //设置与X轴的补白为0  

  50.        categoryaxis.setLowerMargin(0.0D);  

  51.        categoryaxis.setUpperMargin(0.0D);  

  52.          

  53.        // 将图表已数据流的方式返回给客户端  

  54.        ChartUtilities.writeChartAsPNG(outputStream, jfreechart,  

  55.                500, 270);  

  56.  

  57.    }  

  58.      

  59.    private static CategoryDataset createDataset() {  

  60.        // 时间维度  

  61.        String[] category1 = { "第一季度", "第二季度", "第三季度", "第四季度" };  

  62.        // 分类维度  

  63.        String[] category2 = { "JAVA", "C/C++", "PHP" };  

  64.        DefaultCategoryDataset defaultdataset = new DefaultCategoryDataset();  

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

  66.            String category = category1[i];  

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

  68.                String cat = category2[j];  

  69.                // 模拟添加数据  

  70.                defaultdataset.addValue(DataUtils.getRandomData(), cat, category);  

  71.            }  

  72.        }  

  73.        return defaultdataset;  

  74.    }  

  75.  

  76.  

  77. }  

     

package com.helloweenvsfei.jfreechart;

import java.awt.Color;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;


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.CategoryLabelPositions;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RectangleInsets;

public class AreaChart {
        public static void main(String[] agrs) throws IOException{
                // 打开一个输出流
                OutputStream outputStream=new FileOutputStream("AreaChart.png");
                
                // 获取数据集对象
                CategoryDataset dataset = createDataset();
                // 创建图形对象
                JFreeChart jfreechart = ChartFactory.createAreaChart("08年图书销售量排名",
                                "按季度", "销量", dataset, PlotOrientation.VERTICAL, true, true,
                                false);
                // 获得图表区域对象
                CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
                //设置前景色为50%透明
                categoryplot.setForegroundAlpha(0.5F);
                //设置X轴偏移量
                categoryplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
                //设置北景色为浅灰色
                categoryplot.setBackgroundPaint(Color.lightGray);
                //设置显示网 线
                categoryplot.setDomainGridlinesVisible(true);
                //设置网 线为白色
                categoryplot.setDomainGridlinePaint(Color.white);
                //设置显示边界线
                categoryplot.setRangeGridlinesVisible(true);
                //设置显示边界线为白色
                categoryplot.setRangeGridlinePaint(Color.white);
                //获得X轴对象
                CategoryAxis categoryaxis = categoryplot.getDomainAxis();
                //设置X轴 签位置为45度角
                categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
                //设置与X轴的补白为0
                categoryaxis.setLowerMargin(0.0D);
                categoryaxis.setUpperMargin(0.0D);
                
                // 将图表已数据流的方式返回给客户端
                ChartUtilities.writeChartAsPNG(outputStream, jfreechart,
                                500, 270);

        }
        
        private static CategoryDataset createDataset() {
                // 时间维度
                String[] category1 = { "第一季度", "第二季度", "第三季度", "第四季度" };
                // 分类维度
                String[] category2 = { "JAVA", "C/C++", "PHP" };
                DefaultCategoryDataset defaultdataset = new DefaultCategoryDataset();
                for (int i = 0; i < category1.length; i++) {
                        String category = category1[i];
                        for (int j = 0; j < category2.length; j++) {
                                String cat = category2[j];
                                // 模拟添 数据
                                defaultdataset.addValue(DataUtils.getRandomData(), cat, category);
                        }
                }
                return defaultdataset;
        }


}

效果:


 

5、时序图

  

  1. import java.awt.BasicStroke;  

  2. import java.io.FileOutputStream;  

  3. import java.io.IOException;  

  4. import java.io.OutputStream;  

  5.  

  6. import org.jfree.chart.ChartFactory;  

  7. import org.jfree.chart.ChartUtilities;  

  8. import org.jfree.chart.JFreeChart;  

  9. import org.jfree.chart.plot.XYPlot;  

  10. import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有