62,614
社区成员
发帖
与我相关
我的任务
分享
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="tool.*,table.*,dao.*"%>
<%@ page import ="
org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.data.category.DefaultCategoryDataset,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.chart.renderer.category.BarRenderer3D,
java.util.*,
org.jfree.chart.plot.PlotOrientation,
java.awt.Color,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.category.CategoryDataset,
org.jfree.data.general.*,
org.jfree.chart.plot.CategoryPlot,
org.jfree.chart.axis.CategoryAxis,
org.jfree.chart.axis.ValueAxis,
org.jfree.chart.urls.StandardCategoryURLGenerator,
org.jfree.chart.*,
org.jfree.chart.entity.*,
org.jfree.chart.labels.*,
org.jfree.chart.axis.CategoryLabelPositions,
org.jfree.ui.TextAnchor,
org.jfree.chart.axis.NumberAxis,
org.jfree.chart.axis.NumberTickUnit"
%>
<html>
<head>
<title>柱状图输出</title>
</head>
<body>
<%
Integer right=(Integer)session.getAttribute("right");
if(right==null)
{
response.sendRedirect("outTime.do");
}
%>
<%
//设置曲线
HotUsedTb hut=new HotUsedTb();
TbRealinfo tri=new TbRealinfo();
RealInfoDao rid=new RealInfoDao();
Integer sjdw=(Integer)request.getAttribute("sjdw");
DealStr ds=new DealStr();
String type=((String)request.getAttribute("type")).trim();
String ziduan="";
String ziduanzhi="";
int chooseTb=((Integer)session.getAttribute("chooseTb")).intValue();
String meterType=((String)session.getAttribute("meterType")).trim();
String start=((String)session.getAttribute("start")).trim();
String end=((String)session.getAttribute("end")).trim();
RpFactory.setStarTime(start);
RpFactory.setEndTime(end);
RpFactory.setSjdw(sjdw.intValue());
RpFactory.setMeterType(meterType);
RpFactory.setStartRow(((Integer)session.getAttribute("startRow")).intValue());
RpFactory.setPageSize(((Integer)session.getAttribute("pageSize")).intValue());
RpFactory.setChooseTable(chooseTb);
Collection list=null;
TbMeter tm=new TbMeter();
MeterDao md=new MeterDao();
TbGroup tg=new TbGroup();
GroupDao gd=new GroupDao();
tm=md.listOneMeter(new Integer(Integer.parseInt(meterType.substring(1,meterType.length()))));
tri=rid.listRealInfo(tm.getMId().intValue());
String dw1="";
String dw2="";
dw1=DealStr.getDw(tri.getRDw());
dw2=DealStr.getDw(tri.getRDw()).substring(0,2);
tg=gd.listOneGroup("",tm.getMGrp());
list=RpFactory.generateCollection();
switch(Integer.parseInt(type))
{
case 1:
ziduan="瞬时流量"+dw1;
break;
case 2:
if(tm.getMType().equals("119"))
{
ziduan="热功率GJ/h";
}
else
{
ziduan="热功率kw";
}
break;
case 3:
ziduan="用水量"+dw2;
break;
case 4:
ziduan="使用热量GJ";
break;
case 6:
ziduan="使用冷量GJ";
break;
case 7:
ziduan="供水温度℃";
break;
case 8:
ziduan="回水温度℃";
break;
}
ziduan=ziduan+"----"+tg.getGName().trim()+"("+tm.getMName().trim()+")"+" "+ds.fmatT(start)+"----"+ds.fmatT(end);
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
Iterator it=list.iterator();
while(it.hasNext())
{
hut=(HotUsedTb)it.next();
String ziDuanZhi="";
String time="";
switch(Integer.parseInt(type))
{
case 1:
ziDuanZhi=hut.getSsll();
break;
case 2:
ziDuanZhi=hut.getSsrl();
break;
case 3:
ziDuanZhi=hut.getAdd();
break;
case 4:
ziDuanZhi=hut.getHot();
break;
case 6:
ziDuanZhi=hut.getThot();
break;
case 7:
ziDuanZhi=hut.getHout();
break;
case 8:
ziDuanZhi=hut.getHin();
break;
}
if(ziDuanZhi.trim().equals("x"))
{
}
else
{
dataset.addValue(Float.parseFloat(ziDuanZhi.trim()),"",ds.fmatT(hut.getTime()));
}
}
JFreeChart chart = ChartFactory.createBarChart3D(ziduan,
"时间",//横坐标名称
"值",//纵坐标名称
dataset,//数据集合
PlotOrientation.VERTICAL,//图形位置,水平还是垂直
false,
false,
false);
CategoryPlot categoryPlot = chart.getCategoryPlot();//获得 plot:3dBar为CategoryPlot
//获取横坐标
CategoryAxis domainAxis = categoryPlot.getDomainAxis();
//设置 横坐标 垂直显示
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(1));
ValueAxis rangeAxis = categoryPlot.getRangeAxis();
//设置最高的一个柱与图片顶端的距离
rangeAxis.setUpperMargin(0.5);
BarRenderer3D renderer=(BarRenderer3D) categoryPlot.getRenderer();
categoryPlot.setDomainAxis(domainAxis); //使横坐标设置生效
//显示每个柱的数值,并修改该数值的字体属性
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
//设置bar的最小宽度,以保证能显示数值
renderer.setMinimumBarLength(0.02);
//最大宽度
renderer.setMaximumBarWidth(0.07);
//设置不能在柱子上正常显示的那些数值的显示方式,将这些数值显示在柱子外面
ItemLabelPosition itemLabelPositionFallback=new ItemLabelPosition(
ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_LEFT,
TextAnchor.HALF_ASCENT_LEFT,-1.57D);
//设置不能正常显示的柱子label的position
renderer.setPositiveItemLabelPositionFallback(itemLabelPositionFallback);
renderer.setNegativeItemLabelPositionFallback(itemLabelPositionFallback);
renderer.setItemLabelsVisible(true);
renderer.setItemMargin(10);
String filename = ServletUtilities.saveChartAsPNG(chart, 980, 450, null, session);
String graphURL = request.getContextPath() + "/servlets/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" border=0 usemap="#<%= filename %>">
</body>
</html>