POI+jfreechart资料

 

Jfreechart功能介绍

 

JFreeChart它主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。

它可以通过数据生成相应的报表

 

 

我们可以从官方网站上获取最新版本和相关资料(但是jfreeDeveloper Guides是需要花美金才能获取),

获取地址:http://www.jfree.org/jfreechart/index.html(同时可以获得简明介绍)

 

 

JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包

 

括如下几个方面:

    pie charts (2D and 3D):饼图(平面和立体)

    bar charts (regular and stacked, with an optional 3D effect):柱状图

    line and area charts:曲线图

    time series, high/low/open/close charts and candle stick charts:时序图

    combination charts:复合图

    Gantt charts:甘特图

    (态图表,饼图(二维和三维) , 柱状图 (水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表)

图形可以导出成PNGJPEG格式,同时还可以与PDFEXCEL关联

 

JFreeChart核心类库介绍:

研究jfreechart源码发现源码的主要由两个大的包组成:org.jfree.chart,org.jfree.data。其中前者主要与图形本身有关,后者与图形显示的数据有关。具体研究如果大家有兴趣的话可以自己研究。

 

核心类主要有:

     org.jfree.chart.JFreeChart:图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象

     org.jfree.data.category.XXXDataSet:数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类

     org.jfree.chart.plot.XXXPlot:图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要AxisRenderer以及数据集对象的支持

     org.jfree.chart.axis.XXXAxis:用于处理图表的两个轴:纵轴和横轴

     org.jfree.chart.render.XXXRender:负责如何显示一个图表对象

     org.jfree.chart.urls.XXXURLGenerator:用于生成Web图表中每个项目的鼠标点击链接

     XXXXXToolTipGenerator:用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类

 

数据集对象:

       CategoryDataset:

 

       String[] rowKeys = { "One", "Two", "Three" };

       String[] colKeys = { "1987", "1997", "2007" };

              double[][] data = { { 50, 20, 30 }, { 20, 10D, 40D },

              { 40, 30.0008D, 38.24D }, };

CategoryDataset cd = DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);

 

CategoryDataset对象 数据用于(Bar-柱状图) Area-区域图) Line-小折线图)

rowKeys:横坐标点标识,1维数组,可设多个,如果数目太多图片显示不开则取平均值,(如:点标识为:12345,图片如果显示不开则显示135)将图片分辨率设大一些可以解决此问题。

colKeys:竖坐标点标识,同上。

date:数据。其中{ 50, 20, 30 }为一条数据,如果是小折线图则是一条线,data里有三条线。支持double型数据

 

 

       PieDataset

             

              DefaultPieDataset defaultpiedataset = new DefaultPieDataset();

              defaultpiedataset.setValue("One", new Double(37.800000000003D));

              defaultpiedataset.setValue("Two", new Double(20.002D));

              defaultpiedataset.setValue("Three", new Double(17.504D));

              defaultpiedataset.setValue("Four", new Double(47D));

 

PieDataset对象, 数据用于 (Pie-饼状图)

第一个参数为饼状图其中一个区域的标识

第二个参数为饼状图其中一个区域所占的大小,支持double型数据

Defaultpiedataset里共有4个区域

 

       XYDataset

 

           // 用于生成第一条折线

              XYSeries xyseries1 = new XYSeries("One");

              xyseries1.add(1, 22420);

              xyseries1.add(2, 2312134.2320);

              xyseries1.add(3, 0);

              // 用于生成第二条折线,以此类推

              XYSeries xyseries2 = new XYSeries("Two");

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

                     int x = i + 1;

                     xyseries2.add(x, i * 10);

              }

 

              XYSeriesCollection xySeriesCollection = new XYSeriesCollection();

              将两条线加入到坐标折线图中

              xySeriesCollection.addSeries(xyseries1);

              xySeriesCollection.addSeries(xyseries2);

 

XYDataset对象,数据用于(XYLine-XY坐标折线图)

XYSeries xyseries1 = new XYSeries("One")为其中一条折线“one”为这条线的标识

xyseries1.add(1, 22420);第一个参数为横坐标点标识。第二个参数为数据,也是竖坐标点标识,它会根据数据的最大值和最小值设置竖坐标点的最大值和最小值。可设多个折点。

 

 

创建报表

      

       Area(区域图):

              JFreeChart jfreechart = ChartFactory.createAreaChart(“AreaPicName”, // 标题

                            “XLineName”, // categoryAxisLabel category轴,横轴,X轴标签)

                            “YLineName”, // valueAxisLabelvalue轴,纵轴,Y轴的标签)

                            categoryDataset, // dataset数据模型

                            PlotOrientation.VERTICAL, true, // legend

                            false, // tooltips

                            false); // URLs

// 以下的设置可以由用户定制,也可以省略

                     CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();

 

                     plot.setBackgroundAlpha(0.5f);

                     plot.setForegroundAlpha(0.5f);

将以创建好的数据模型放到参数里

 

 

Bar (柱状图):

              JFreeChart jfreechart = ChartFactory.createBarChart(“BarPicName”, // 标题

                            “XLineName”, // categoryAxisLabel category轴,横轴,X轴的标签)

                            “YLineName”, // valueAxisLabelvalue轴,纵轴,Y轴的标签)

                            categoryDataset, // dataset数据模型

                            PlotOrientation.VERTICAL, true, // legend

                            false, // tooltips

                            false); // URLs

              // 以下的设置可以由用户定制,也可以省略

              CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();

 

              plot.setBackgroundAlpha(0.5f);

              plot.setForegroundAlpha(0.5f);

              // 其他设置 参考 CategoryPlot

将以创建好的数据模型放到参数里

 

 

Line (小折线图):

       // 创建JFreeChart对象:ChartFactory.createLineChart

JFreeChart jfreechart = ChartFactory.createLineChart(“LinePicName”, // 标题

              “XLineName”, // categoryAxisLabel category轴,横轴,X轴标签)

              “YLineName”, // valueAxisLabelvalue轴,纵轴,Y轴的标签)

              categoryDataset, // dataset数据模型

              PlotOrientation.VERTICAL, true, // legend

              false, // tooltips

              false); // URLs

       // 以下的设置可以由用户定制,也可以省略

       CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();

 

       plot.setBackgroundAlpha(0.5f);

       plot.setForegroundAlpha(0.5f);

       // 其他设置 参考 CategoryPlot

将以创建好的数据模型放到参数里

 

XYLine (XY坐标折线图):

 

// 创建JFreeChart对象:ChartFactory.createXYLineChart

JFreeChart jfreechart = ChartFactory.createXYLineChart(“XYLinePicName”, // 标题

              “XLineName”, // categoryAxisLabel category轴,横轴,X轴标签)

              “YLineName”, // valueAxisLabelvalue轴,纵轴,Y轴的标签)

              dataset, // dataset数据模型

              PlotOrientation.VERTICAL, true, // legend

              false, // tooltips

              false); // URLs

       // 以下的设置可以由用户定制,也可以省略

       XYPlot plot = (XYPlot) jfreechart.getPlot();

 

       plot.setBackgroundAlpha(0.5f);

       plot.setForegroundAlpha(0.5f);

       // 其他设置 参考 CategoryPlot

将以创建好的数据模型放到参数里

 

 

 

 

Pic (饼状图):

JFreeChart jfreechart = ChartFactory.createPieChart(“PicName”, 标题

pieDataset, // dataset数据模型

                            true, // legend

                            false, // tooltips

                            false); // URLs

 

              // 以下的设置可以由用户定制,也可以省略

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

              pieplot.setBackgroundAlpha(0.5f);

              pieplot.setForegroundAlpha(0.5f);

              // 其他设置 参考 CategoryPlot

将以创建好的数据模型放到参数里

 

 

将图片存储到本地:

       FileOutputStream out = new FileOutputStream(“C:/abc”);图片输出路径</s

你可能感兴趣的:(jfreechart,Excel)