<%@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>
jsp 柱状图
最新推荐文章于 2020-12-19 13:54:37 发布