JFreeChart网页图表例子

来源:互联网 发布:qq三国四象js用什么 编辑:程序博客网 时间:2024/03/29 16:18
柱状图 bar.jsp
柱状图1 bar1.jsp
柱状图2 bar2.jsp
3D柱状图 bar3d.jsp


柱状图 bar.jsp :

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.DefaultCategoryDataset"%>
<%@ page import = "java.util.Iterator,
org.jfree.data.time.*,
java.awt.Font"%>
<%
Font font=new Font("黑体",Font.TRUETYPE_FONT, 12);
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(300, "", "超员");
dataset.addValue(200, "", "超速");
dataset.addValue(500, "", "随意停车上下客");
dataset.addValue(340, "", "右侧超车");
dataset.addValue(280, "", "客货混装");
dataset.addValue(500, "", "违法装载");
dataset.addValue(128, "", "疲劳驾驶");
dataset.addValue(263, "", "违反分道行驶原则行驶");
dataset.addValue(412, "", "车牌证失效");
dataset.addValue(380, "", "其他违法行为");

JFreeChart chart = ChartFactory.createBarChart3D("查处违法信息统计图",
                 "违法信息",
                 "数量",
                 dataset,
                 PlotOrientation.VERTICAL,
                 false,
                 false,
                 false);
//chart.setTitle("网站访问统计表",font);//可选,设置图片标题
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">

柱状图1 bar1.jsp

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.awt.Color,
java.awt.Font,
org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.CategoryDataset,org.jfree.data.DatasetUtilities,
org.jfree.chart.plot.CategoryPlot,
org.jfree.chart.axis.CategoryAxis,
org.jfree.chart.axis.ValueAxis,
org.jfree.chart.renderer.BarRenderer3D,
org.jfree.chart.labels.StandardCategoryLabelGenerator,
org.jfree.chart.axis.AxisLocation"%>
<%
double[][] data = new double[][] {{672, 766, 223, 540, 126},{325, 521, 210, 340, 106},{332, 256, 523, 240, 526}};
String[] rowKeys = {"苹果","梨子","葡萄"};
String[] columnKeys = {"北京","上海","广州","成都","深圳"};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
Font font=new Font("黑体",Font.TRUETYPE_FONT, 12);
JFreeChart chart = ChartFactory.createBarChart3D("水果销量图统计",
                 null,
                 null,
                 dataset,
                 PlotOrientation.VERTICAL,
                 true,false,false);
chart.setBackgroundPaint(Color.white);
CategoryPlot plot = chart.getCategoryPlot();

CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setVerticalCategoryLabels(false);
domainAxis.setTickLabelFont(font);
plot.setDomainAxis(domainAxis);

ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setTickLabelFont(font);
//设置最高的一个 Item 与图片顶端的距离
rangeAxis.setUpperMargin(0.15);
//设置最低的一个 Item 与图片底端的距离
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);

BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.black);
//设置 Wall 的颜色
renderer.setWallPaint(Color.gray);
//设置每种水果代表的柱的颜色
renderer.setSeriesPaint(0, new Color(0, 0, 255));
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.green);
//设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.1);
//显示每个柱的数值,并修改该数值的字体属性
//renderer.setItemLabelGenerator(new StandardCategoryLabelGenerator());
//renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);

//设置柱的透明度
plot.setForegroundAlpha(0.6f);
//设置地区、销量的显示位置
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=500 height=300 border=0 usemap="#<%= filename %>">


柱状图2 bar2.jsp


<%@ page contentType="image/jpeg;charset=GBK"%>
<%@ page import = "java.io.*"%>
<%@ page import = "java.awt.*"%>
<%@ page import = "org.jfree.data.*"%>
<%@ page import = "org.jfree.chart.*"%>
<%@ page import = "org.jfree.chart.plot.*"%>
<%@ page import = "org.jfree.chart.ChartUtilities"%>
<%@ page import = "org.jfree.chart.title.TextTitle"%>

<html>
<head>
<title>
TestChartDemo
</title>
</head>
<body bgcolor="#ffffff">
<%
   //设置数据集   
   DefaultCategoryDataset dataset = new DefaultCategoryDataset();

   dataset.addValue(2, "0-60分", "一班");
   dataset.addValue(34, "61-80分", "一班");
   dataset.addValue(12, "81-100分", "一班");
   dataset.addValue(1, "0-60分", "二班");
   dataset.addValue(40, "61-80分", "二班");
   dataset.addValue(9, "81-100分", "二班");
   dataset.addValue(0, "0-60分", "三班");
   dataset.addValue(23, "61-80分", "三班");
   dataset.addValue(32, "81-100分", "三班");
   dataset.addValue(3, "0-60分", "四班");
   dataset.addValue(33, "61-80分", "四班");
   dataset.addValue(4, "81-100分", "四班");
   dataset.addValue(4, "0-60分", "五班");
   dataset.addValue(37, "61-80分", "五班");
   dataset.addValue(11, "81-100分", "五班");
          
   //创建柱状图
   JFreeChart chart = ChartFactory.createBarChart3D(
           "", // 图表标题
           "班级", // 目录轴的显示标签
           "分数", // 数值轴的显示标签
           dataset, // 数据集
           PlotOrientation.VERTICAL, // 图表方向:水平、垂直
           true, // 是否显示图例(对于简单的柱状图必须是false)
           false, // 是否生成工具
           false // 是否生成URL链接
           );
   //设置标题
   Font font = new Font("黑体", Font.CENTER_BASELINE, 20);
   TextTitle title = new TextTitle("各班学生成绩统计");
   title.setFont(font);
   //统计图片的底色       
   chart.setBackgroundPaint(java.awt.Color.white);
   chart.setTitle(title);
   //取得response的OutputStream
   OutputStream ostream = response.getOutputStream();
   //设定图片的宽为400,高为300,并输出至ostream     
   ChartUtilities.writeChartAsJPEG(ostream, chart, 400, 300);
   ostream.flush();
   ostream.close();
%>
</body>
</html>

 


3D柱状图 bar3d.jsp


<%@ page contentType="text/html;charset=GBK"%>
<%@ page import = "org.jfree.chart.ChartFactory,
                  org.jfree.chart.ChartPanel,
                  org.jfree.chart.JFreeChart,
                  org.jfree.chart.StandardLegend,
                  org.jfree.chart.axis.CategoryAxis,
  org.jfree.chart.axis.CategoryLabelPositions,
  org.jfree.chart.plot.CategoryPlot,
  org.jfree.chart.plot.PlotOrientation,   
  org.jfree.chart.servlet.ServletUtilities,   
  org.jfree.data.CategoryDataset,
  org.jfree.data.DatasetUtilities
"%>
<%
 double[][] data = new double[][]
           {{10.0, 4.0, 15.0, 14.0},
            {-5.0, -7.0, 14.0, -3.0},
            {6.0, 17.0, -12.0, 7.0},
            {7.0, 15.0, 11.0, 0.0},
            {-8.0, -6.0, 10.0, -9.0},
            {9.0, 8.0, 0.0, 6.0},
            {-10.0, 9.0, 7.0, 7.0},
            {11.0, 13.0, 9.0, 9.0},
            {-3.0, 7.0, 11.0, -10.0}};
            
     CategoryDataset dataset= DatasetUtilities.createCategoryDataset("Series ", "Category ", data);
 JFreeChart chart = ChartFactory.createBarChart3D(
           "3D Bar Chart Demo",      // chart title
           "Category",               // domain axis label
           "Value",                  // range axis label
           dataset,                  // data
           PlotOrientation.VERTICAL, // orientation
           true,                     // include legend
           true,                     // tooltips
           false                     // urls
       );

       CategoryPlot plot = chart.getCategoryPlot();
       CategoryAxis axis = plot.getDomainAxis();
       axis.setCategoryLabelPositions(
           CategoryLabelPositions.createUpRotationLabelPositions(Math.PI/ 8.0)
       );
       


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



注意以上代码,均在:jfreechart-0.9.20.jar、jcommon-0.9.5.jar下调试通过!
web.xml配置servlet代码:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
 <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>
 
原创粉丝点击