JFreeChart的简单使用

JFreeChart是一个用于JAVA的开源图表库,支持创建各种图表,如饼图、柱状图、散点图和时序图等。它可以生成PNG、JPEG格式的图表,也能与PDF和Excel结合。本文将展示如何在JSP中使用JFreeChart,包括必要的包导入、下载链接和简单的代码示例。

JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。

  • 使用JFreeChart先要导入两个包jcommon-1.0.23.jarjfreechart-1.0.19.jar
  • 下载地址

代码

  • jsp部分
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="org.jfree.chart.ChartFactory" %>
<%@ page import="org.jfree.chart.JFreeChart" %>
<%@ page import="org.jfree.data.category.DefaultCategoryDataset" %>
<%@ page import="org.jfree.chart.plot.PlotOrientation" %>
<%@ page import="org.jfree.chart.entity.StandardEntityCollection" %>
<%@ page import="org.jfree.chart.ChartRenderingInfo" %>
<%@ page import="org.jfree.chart.servlet.ServletUtilities" %>
<%@ page import="org.jfree.data.category.DefaultCategoryDataset"%>
<%@ page import="org.jfree.chart.StandardChartTheme"%>
<%@ page import="java.awt.Font"%>
<%@ page import="younghd.MyDataBase" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="org.jfree.data.general.DefaultPieDataset" %>

<%
  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);							//设置主题样式
  DefaultCategoryDataset dataset1=new DefaultCategoryDataset();             //绘制柱状图的数据结构
  DefaultPieDataset dpd = new DefaultPieDataset();                      //绘制饼状图的数据结构

//从数据库中获得数据
//饼状图dpd.setValue(名称, 数量);
//柱状图为dataset1.addValue(数量,名称,月份);
  MyDataBase db=new MyDataBase();
  String sql="SELECT * FROM phone.num; ";
  ResultSet rs= null;
  try {
    rs = db.inputSQL(sql);
    while(rs.next())
    {
      int count=rs.getInt(1);
      String name=rs.getString(2);
      String month=rs.getString(3);
      dataset1.addValue(count,name,month);
      dpd.setValue(name, count);
    }
  } catch (SQLException e) {
    e.printStackTrace();
  }
  db.close();

//创建柱状图JFreeChart组件的图表对象
  JFreeChart chart=ChartFactory.createBarChart3D(
          "手机销售情况",		//图表标题
          "季度",		       //x轴的显示标题
          "销量(万台)",	   //y轴的显示标题
          dataset1,           //数据集
          PlotOrientation.VERTICAL,//图表方向(垂直)
          true,		//是否包含图例
          false,		//是否包含提示
          false		//是否包含URL
  );
  ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
  String fileName=ServletUtilities.saveChartAsPNG(chart,370,240,info,session);
  String url=request.getContextPath()+"/servlet/DisplayChart?filename="+fileName;

  //创建饼状图的JFreeChart组件的图标对象
  JFreeChart chart1 = ChartFactory.createPieChart("手机销售情况的百分比",dpd, true, false, false);
  String fileName1 = ServletUtilities.saveChartAsPNG(chart1,370,240,session);
  //ServletUtilities是面向web开发的工具类,返回一个字符串文件名,文件名自动生成,生成好的图片会自动放在服务器(tomcat)的临时文件下(temp)
  String url1 = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName1;
  //根据文件名去临时目录下寻找该图片,这里的/DisplayChart路径要与配置文件里用户自定义的<url-pattern>一致
%>

<html>
<head>
  <title>绘制柱形图和饼状图</title>
</head>
<body topmargin="0">
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>&nbsp;<img src="<%=url %>"></td>
  </tr>
  <tr>
    <td>&nbsp;<img src="<%=url1 %>"></td>
  </tr>
</table>
</body>
</html>
  • web.xml配置servlet的路由地址
	<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>
  • 运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值