JfreeChart使用详解

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

(本项目为网页版)

首先下载     JFreeChart   的  jar包 ,      在项目中导入     gnujaxp.jar     jcommon-1.0.17.jar      jfreechart-1.0.14.jar   三个jar包

jar包,  下载地址:  JfreeChart所用的jar包 

web.xml  文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  
  <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>/DisplayChart</url-pattern>
 </servlet-mapping>
  
  
  
  
  
</web-app>


 

Index.jsp   页面代码:

<%@ page contentType="text/html;charset=UTF-8"%>

<%@ page import="org.jfree.chart.ChartFactory,

org.jfree.chart.JFreeChart,

org.jfree.chart.plot.PlotOrientation,

org.jfree.chart.servlet.ServletUtilities,

org.jfree.data.category.CategoryDataset,

org.jfree.data.general.DatasetUtilities,

org.jfree.chart.plot.*,

org.jfree.chart.labels.*,

org.jfree.chart.renderer.category.BarRenderer3D,

java.awt.*,

org.jfree.ui.*,

org.jfree.chart.axis.AxisLocation,org.jfree.chart.title.TextTitle,org.jfree.chart.axis.CategoryAxis,org.jfree.chart.axis.NumberAxis"%>



<%@ page import="org.jfree.chart.ChartFactory,     
          org.jfree.chart.JFreeChart,          
 org.jfree.chart.plot.PlotOrientation,         
 org.jfree.chart.servlet.ServletUtilities,      
org.jfree.data.category.DefaultCategoryDataset"%>



<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
   <%
   
  DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 dataset.addValue(620, "广州1", "猪肉");
 dataset.addValue(520, "广州2", "牛肉");
 dataset.addValue(550, "广州3", "鸡肉");
 dataset.addValue(500, "广州4", "鱼肉");
 
 dataset.addValue(500, "广州5", "羊肉");
 dataset.addValue(600, "广州6", "牛肉");
 
 dataset.addValue(800, "广州8", "蟹肉");                  
                   
                   //
                   
                   


JFreeChart chart = ChartFactory.createBarChart("统计图","肉类","销量",dataset,PlotOrientation.VERTICAL,true,true,false);
                   
                   
                   
                   //设置字体,不然会中文乱码的

 Font font =new Font("宋体", Font.BOLD, 16); 

 TextTitle title =new TextTitle("肉类销量统计图", font); 


 chart.setTitle(title);//标题


CategoryPlot plot = chart.getCategoryPlot();

NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();

 CategoryAxis domainAxis = plot.getDomainAxis(); 

 /*------设置X轴坐标上的文字-----------*/  

 domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11)); 

 /*------设置X轴的标题文字------------*/  

 domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12)); 

 /*------设置Y轴坐标上的文字-----------*/  

 numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12)); 

 /*------设置Y轴的标题文字------------*/  

 numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12)); 

  /*------这句代码解决了底部汉字乱码的问题-----------*/  

 chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));  //由底部文字才加,不然会出错
 
                   
                   // 以上为文字设置
                   
                   //以下为背景设置
                   
                   //设置网格背景颜色

plot.setBackgroundPaint(Color.white);

//设置网格竖线颜色

plot.setDomainGridlinePaint(Color.pink);

//设置网格横线颜色

plot.setRangeGridlinePaint(Color.pink);

//显示每个柱的数值,并修改该数值的字体属性

BarRenderer3D renderer = new BarRenderer3D();

renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());

renderer.setBaseItemLabelsVisible(true);

//默认的数字显示在柱子中,通过如下两句可调整数字的显示

//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题

renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));

renderer.setItemLabelAnchorOffset(10D);

renderer.setItemLabelFont(new Font("宋体", Font.PLAIN, 12));

renderer.setItemLabelsVisible(true);

//设置每个地区所包含的平行柱的之间距离

//renderer.setItemMargin(0.3);

plot.setRenderer(renderer);

//设置地区、销量的显示位置

//将下方的“肉类”放到上方

plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);

//将默认放在左边的“销量”放到右方

plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
                   
                   //
                   
                   
                   
 String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
 String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
 %>
 
<img src="<%= graphURL %>" width=600 height=600 border=0 usemap="#<%= filename %>">
  </body>
</html>








 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值