jsp 柱状图

 
<%@page contentType="text/html;charset=gb2312" import="com.ay.view.plan.*,java.util.*,com.ay.util.*" errorPage="../errorpage.jsp"%>
<%@ page import="java.awt.Font"%>
<%@ page import="org.jfree.chart.axis.CategoryAxis"%>
<%@ page import="org.jfree.chart.axis.ValueAxis"%>
<%@ page import="org.jfree.chart.ChartFactory"%>
<%@ page import="org.jfree.chart.JFreeChart"%>
<%@ page import="org.jfree.chart.labels.ItemLabelPosition"%>
<%@ page import="org.jfree.chart.labels.ItemLabelAnchor"%>
<%@ page import="org.jfree.chart.plot.PlotOrientation"%>
<%@ page import="org.jfree.chart.plot.CategoryPlot"%>
<%@ page import="org.jfree.chart.renderer.category.BarRenderer3D"%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import="org.jfree.data.category.DefaultCategoryDataset"%>
<%@ page import="org.jfree.ui.TextAnchor"%>
<%@ page import="org.jfree.chart.labels.StandardCategoryItemLabelGenerator"%>
<%@taglib uri="PlanOrder"  prefix="plan" %>
<%@taglib uri="Login"  prefix="login" %> 
<login:Login> </login:Login> 
<%@taglib uri="UITools"  prefix="uitools" %>
<%@include file="../top.jsp"%> 
<html>
<title>统计柱状图</title>
<body>
<%
	String title=new String(request.getParameter("title").getBytes("iso8859-1"),"gb2312");
	String para1=request.getParameter("para1");
	String para2=request.getParameter("para2");
	String xa=new String(request.getParameter("xa").getBytes("iso8859-1"),"gb2312");
	String ya=new String(request.getParameter("ya").getBytes("iso8859-1"),"gb2312");
	System.out.println("xa:"+xa+";ya:"+ya);
	String formname=request.getParameter("formname");
	DefaultCategoryDataset data = new DefaultCategoryDataset(); 
	DBAccess dba=new DBAccess();

	try{
		String sql2="select "+para1+" as v1,"+para2+" as v2,count(*) as sumcount from "+formname+" where "+ para1 +" is not null and "+ para2 +" is not null group by "+para1+","+para2;
		System.out.println("sql2======="+sql2);
		List list2= dba.queryToHashtable(sql2);
		if(list2!=null&&list2.size()>0){
			for(int i= 0; i<list2.size();i++){
				Hashtable table=(Hashtable)list2.get(i);
				String v1=(String)table.get("v1");
				String v2=(String)table.get("v2");
				String sumcount=(String)table.get("sumcount");
				int sum=Integer.parseInt(sumcount);
				data.addValue(sum,v1,v2);
			}
		}
	}catch(Exception e){
	}

	JFreeChart chart = ChartFactory.createBarChart3D(title+"统计图",xa,ya,data,PlotOrientation.VERTICAL,true,false,false);
	CategoryPlot plot = chart.getCategoryPlot();
	//无数据时文字
	plot.setNoDataMessage("无统计数据!!!");
	//标题字体,解决乱码
	chart.getTitle().setFont(new Font("宋体", Font.BOLD, 24));
	//设置透明度
	plot.setForegroundAlpha(0.7F);

	//X轴字体,解决乱码
	CategoryAxis domainAxis=plot.getDomainAxis();
	domainAxis.setLabelFont(new Font("宋体",Font.BOLD,16));
	domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,13));
	//设置距离图片左端距离
	//domainAxis.setLowerMargin(0.1);
	//设置距离图片右端距离
	//domainAxis.setUpperMargin(0.1);
	domainAxis.setCategoryMargin(0.4);

	//Y轴字体,解决乱码
	ValueAxis rangeAxis=plot.getRangeAxis();
	rangeAxis.setLabelFont(new Font("宋体",Font.BOLD,16));
	//设置最高的一个柱与图片顶端的距离
	rangeAxis.setUpperMargin(0.15);
	//图例字体,解决乱码
	chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,13));

	BarRenderer3D renderer = new BarRenderer3D();
	//显示数字
	renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
	renderer.setItemLabelsVisible(true);
	renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
	renderer.setItemLabelAnchorOffset(10D);
	//设置间隔
	renderer.setItemMargin(-1);
	plot.setRenderer(renderer);

	//650是图片长度,300是图片高度 
	String filename = ServletUtilities.saveChartAsPNG(chart, 750, 350, null, session); 
	String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; 
	System.out.println("graphURL:  "+graphURL);
%>
<CENTER><img src="<%=graphURL%>" width="750" height="350" border="0" usemap="#<%=filename%>"/></CENTER>
</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值