JFreechart

来源:互联网 发布:乐敦养润水副作用知乎 编辑:程序博客网 时间:2024/06/07 01:55
 

JFreeChart是开放源代码站点SourceForge.net上的一个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:时序图

图形可以导出成PNG和JPEG格式

二.图表的生成原理:

 

 

 

 

将生成的JFreeChart对象,以流的形式生成用PNG格式或JPEG格式系统临时文件,然后就可以被访问请求。

三.在实现图表生成中可能用到的接口与类

org.jfree.chart.JFreeChart:图表对象类

org.jfree.data.category.XXXDataSet:数据集对象类

org.jfree.chart.plot.XXXPlot图表区域对象类

org.jfree.chart.axis.XXXAxis:轴对象类

org.jfree.chart.render.XXXRender:修饰刷对象类

 

四.简单开发步骤如下:

1.导入需要的jar包:jfreechart-1.0.3.jar、 jcommon-1.0.6.jar

2.在/WEB-INF/web.xml文件中加入

<servlet>
                     <servlet-name>DisplayChart</servlet-name>
                     <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
        </servlet>
        <servlet-mapping>
                     <servlet-name>DisplayChart</servlet-name>
                     <url-pattern>/servlet/DisplayChart</url-pattern>
        </servlet-mapping>

3.Dataset对象的创建生成

JFreeChart对象的创建生成

   URLGenerator的控制生成

4.例子(以柱状图为例):

1)浏览器中访问:

  • 先构建Dataset对象:

     double[][] data={{672,234,543,434,123},{432,876,234,745,254},{333,444,555,654,123}};

     String[] rowKeys={"苹果","草莓","香蕉"};
    String[] columnKeys={"北京","上海","天津","四川","内蒙古"};
    CategoryDataset cateData=DatasetUtilities.createCategoryDataset(rowKeys,columnKeys,data);

  • 然后构建 JFreeChart对象:

JFreeChart chart=ChartFactory.createBarChart3D("水果销量图统计","水果","产量",cateData,PlotOrientation.VERTICAL,true,false,false);
   

  •  最后获得url:

String filename=ServletUtilities.saveChartAsPNG(chart,500,400,null,session);
    String url=request.getContextPath()+"/servlet/DisplayChart?filename="+filename;

  • 在页面上用标签<img src="<%=url%>">显示图表。

 2)本地生成图片文件:

  • 先构建Dataset对象:

     double[][] data={{672,234,543,434,123},{432,876,234,745,254},{333,444,555,654,123}};

     String[] rowKeys={"苹果","草莓","香蕉"};
    String[] columnKeys={"北京","上海","天津","四川","内蒙古"};
    CategoryDataset cateData=DatasetUtilities.createCategoryDataset(rowKeys,columnKeys,data);

  • 然后构建 JFreeChart对象:

JFreeChart chart=ChartFactory.createBarChart3D("水果销量图统计","水果","产量",cateData,PlotOrientation.VERTICAL,true,false,false);

 

  • 生成图片:

 FileOutputStream fos_jpg = null;

fos_jpg = new FileOutputStream("D://fruit.jpg");
   ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, chart, 400, 300,
     null);(记得关闭文件输出流)

例子所产生的图标如首行所示:

 

原创粉丝点击