JFreeChart类是一个制图对象,它的创建需要一个数据集合对象,在拥有数据集合后即可通过制图工厂进行创建。JFreeChart提供的数
据集合是多种多样的,在实际应用中要根据自己的需要选择合适的数据集合对象。对于不同的数据集合对象,其创建及添加数据的方法也是不同的。
例24.01 使用柱形图统计Java图书销量,通过DefaultCategoryDataset数据集合对象创建柱形图制图对象。其关键代码如下:(实例位置:光盘/TM/Instances/24.01)
- public class ChartUtil {
- /**
- * 创建数据集合
- * @return CategoryDataset对象
- */
- public static CategoryDataset createDataSet() {
- //实例化DefaultCategoryDataset对象
- DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
- //向数据集合中添加数据
- dataSet.addValue( 500 , "JAVA图书" , "J2SE类" );
- dataSet.addValue( 100 , "JAVA图书" , "J2ME类" );
- dataSet.addValue( 900 , "JAVA图书" , "J2EE类" );
- return dataSet;
- }
- /**
- * 创建JFreeChart对象
- * @return JFreeChart对象
- */
- public static JFreeChart createChart() {
- StandardChartTheme standardChartTheme =
new StandardChartTheme( "CN" ); //创建主题样式- standardChartTheme.setExtraLargeFont( new
Font( "隶书" , Font.BOLD, 20 )); //设置标题字体- standardChartTheme.setRegularFont( new Font
( "宋体" , Font.PLAIN, 15 )); //设置图例的字体- standardChartTheme.setLargeFont( new Font
( "宋体" , Font.PLAIN, 15 )); //设置轴向的字体- ChartFactory.setChartTheme(standardChartTheme); //设置主题样式
- //通过ChartFactory创建JFreeChart
- JFreeChart chart = ChartFactory.createBarChart3D(
- "JAVA图书销量统计" , //图表标题
- "JAVA图书" , //横轴标题
- "销量(本)" , //纵轴标题
- createDataSet(), //数据集合
- PlotOrientation.VERTICAL, //图表方向
- false , //是否显示图例标识
- false , //是否显示tooltips
- false ); //是否支持超链接
- return chart;
- }
- }
ChartUtil类是一个自定义的制图工具类,其中createDataSet()方法用于创建柱形图所需要的数据集合,返回
CategoryDataset对象;CreateChart()用于创建制图对象JFreeChart,在此方法中通过ChartFactory对象的
createBarChart3D()方法创建一个3D效果的柱形图对象,并将其返回。
在JSP页面中通过JFreeChart组件提供的Servlet类DisplayChart来获取图片,本实例中在index.jsp页面中输出图片。其关键代码如下:
- <%@ page language= "java" contentType= "text/html" pageEncoding= "GBK" %>
- <%@ page import ="org.jfree.chart.servlet.ServletUtilities,
- com.lyq.util.ChartUtil"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
- <html>
- <head>
- <title>Java图书销量统计</title>
- </head>
- <body>
- <%
- String fileName = ServletUtilities.
saveChartAsJPEG(ChartUtil.createChart(), 450 , 300 ,session);- String graphURL = request.getContextPath()
+ "/DisplayChart?filename=" + fileName;- %>
- <img src= "<%=graphURL%>" border= "1" >
- </body>
- </html>
在输出图片之前,首先要生成JFreeChart组件所绘制的图片。此操作通过调用ServletUtilities类的saveChartAsJPEG()方法来实现,它返回一个.JPEG格式的图片名称。
在获取此图片名称后,通过代码"request.getContextPath() + "/DisplayChart?filename=" + fileName"即可获取到图片的路径,其运行结果如图24.7所示。
图24.7 柱形图统计Java图书销量 |