package com.zbht.util;
import com.zbht.db.oracle.TBManager;
import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.LinkedHashMap;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.DateTickUnit;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.Day;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets;
public class LineXYChart {
private int flag = 0;
public String getLineXYChart(HttpSession session, PrintWriter pw,Connection conn,String flag)
{
XYDataset dataset = this.createDateSet(conn,flag);//建立数据集
String fileName = null;
//建立JFreeChart
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"突发事件时间曲线序列图", // title
"发生时间", // x-axis label
"突发事件数量", // y-axis label
dataset, // data
true, // create legend?
false, // generate tooltips?
false // generate URLs?
);
//设置JFreeChart的显示属性,对图形外部部分进行调整
chart.setBackgroundPaint(Color.GREEN);//设置曲线图背景色
//设置字体大小,形状
Font font = new Font("宋体", Font.BOLD, 16);
TextTitle title = new TextTitle("突发事件时间曲线序列图", font);
chart.setTitle(title);
XYPlot plot = (XYPlot) chart.getPlot();//获取图形的画布
plot.setBackgroundPaint(Color.lightGray);//设置网格背景色
plot.setDomainGridlinePaint(Color.green);//设置网格竖线(Domain轴)颜色
plot.setRangeGridlinePaint(Color.white);//设置网格横线颜色
plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));//设置曲线图与xy轴的距离
plot.setDomainCrosshairVisible(true);
plot.setRangeCrosshairVisible(true);
XYItemRenderer r = plot.getRenderer();
if (r instanceof XYLineAndShapeRenderer)
{
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
//renderer.setD
//renderer.setDefaultShapesVisible(true);
//renderer.setDefaultShapesFilled(true);
renderer.setShapesVisible(true);//设置曲线是否显示数据点
}
//设置Y轴
NumberAxis numAxis = (NumberAxis) plot.getRangeAxis();
NumberFormat numFormater = NumberFormat.getNumberInstance();
numFormater.setMinimumFractionDigits(2);
numAxis.setNumberFormatOverride(numFormater);
//设置提示信息
StandardXYToolTipGenerator tipGenerator = new StandardXYToolTipGenerator(
"历史信息:({1},{2})", new SimpleDateFormat("yyyy-MM"),
numFormater);
r.setToolTipGenerator(tipGenerator);
//设置X轴(日期轴)
DateAxis axis = (DateAxis) plot.getDomainAxis();
//axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM"));
//format = new SimpleDateFormat("yy-MM");
axis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH, 1, new SimpleDateFormat("yyyy-MM")));
//axis.setAutoRange(true);
axis.setTickMarksVisible(true);
// axis.setTickMarkPaint(Color.red);//设置x轴刻度尺颜色
//axis.setLabelAngle(45.00d);//x轴标题旋转角度
// axis.setTickMarkInsideLength(2f);//刻度尺的长度
//axis.setTickMarkOutsideLength(2f);//刻度尺的长度
plot.setDomainAxis(axis);
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
try
{
fileName = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
session);//生成图片
// Write the image map to the PrintWriter
ChartUtilities.writeImageMap(pw, fileName, info, false);
}
catch (IOException e)
{
e.printStackTrace();
}
pw.flush();
return fileName;//返回生成图片的文件名
}
private XYDataset createDateSet(Connection conn,String flag )
{
//显示折线图数据sql语句
String selectSQL = "";
String tempArry[] = null;
String tempArry2[] = null;
LinkedHashMap lhm = null;
if(flag == "1" || flag.equals("1")){
selectSQL= "select "+
"rtrim(char(year(ARISE_TIME)))||'-'||rtrim(char(month(ARISE_TIME))) MYDATE , "+
"count(*) as MYCOUNT from "+
"V_ACCIDENT group by "+
"rtrim(char(year(ARISE_TIME)))||'-'||rtrim(char(month(ARISE_TIME))) order by "+
"rtrim(char(year(ARISE_TIME)))||'-'||rtrim(char(month(ARISE_TIME)))";
}
try {
lhm = TBManager.getMap(selectSQL, conn);
tempArry = TBManager.getFirstCol(selectSQL, conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
TimeSeriesCollection dataset = new TimeSeriesCollection();//时间曲线数据集合
TimeSeries s1 = new TimeSeries("历史曲线",Month.class);//创建时间数据源,每一个//TimeSeries在图上是一条曲线
for(int i=0 ; i<tempArry.length; i++){
tempArry2 = tempArry[i].split("-");
//System.out.println("month:"+tempArry2[1]);
//System.out.println("year:"+tempArry2[0]);
//System.out.println("数量:"+Double.valueOf(lhm.get(tempArry[i]).toString()));
s1.add(new Month(Integer.valueOf(tempArry2[1]).intValue(),Integer.valueOf(tempArry2[0]).intValue()),Double.valueOf(lhm.get(tempArry[i]).toString()));
}
dataset.addSeries(s1);
dataset.setDomainIsPointsInTime(true);
return dataset;
}
}
分享到:
相关推荐
利用Java2D api,它目前支持条形图、饼图、折线图、xy图和时间序列图 包含 jfreechart-1.0.19-demo.jar(java 环境下点击就可以查看) 包含jar包 jfreechart-1.0.19.jar,jfreechart-1.0.19-swt.jar,jcommon-1.0.23...
一份非常简单的jfreechart折线图demo!!!!!!!!
JSP利用JFreeChart生成折线图,文档中包含所需jar包,共有四个例子,导入即可运行,内附有说明
jfreechart-1.0.9-experimental 用于java后台绘制图形的jar包,如折线图 饼图 柱形图
java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图
jfreechart绘制折线图(平面和3D)绝对经典
jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707
Java实现jFreeChart--折线图-附件资源
jfreechart 生成折线图,饼图,柱状图,堆栈柱状图
通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折线图。如果想生成普通效果的折线图,需要通过工厂类ChartFactory的createLineChart()方法获得JFreeChart类的实例;如果想生成3D效果的折线图...
该程序为main 函数,定义了三个方法,分别是jfreechart三种实现折线图的类型,返回的是一个chart 本程序是把图片保存到本地,当然实际应用中,只要在程序和页面中做相关配置即可以使用。 因为图片带点透明,所以...
利用jfreechart绘制的漂亮的折线图,实现双纵坐标,折线点标签还带箭头指示,非常直观,需要提前下载jfreechart.jar文件,否则我的类会报错,也即是要配置运行环境
JFreeChart实时折线图 利用Jfreechart实现applet的动态折线图 实时显示随机数
public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 <!--begin 维优特例 --> ...
源文件 博文链接:https://lansky07.iteye.com/blog/227571
JFreeChart 饼图,柱图,折线图可运行
一个jfreechart的折线图demo.使用servlet封装数据后 jsp展示
JFreeChart双Y轴折线图实例,可以直接运行,实例类为LineChartDemo1.JAVA,有注释。 若想在web工程使用只需如下。 String filename = ServletUtilities.saveChartAsPNG(jfreechart, 600, 400, null, session); ...