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;
}
}
分享到:
相关推荐
JFreeChart是Java中最优秀的绘图工具之一,它支持多种图表类型,包括折线图、柱状图、饼图、散点图、甘特图以及复杂的组合图等。这些图表不仅适用于数据展示,还可以用于数据分析和报告生成,广泛应用于金融、科学、...
利用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...
这个库提供了广泛的数据可视化功能,包括折线图、柱状图、饼图、散点图、甘特图以及更多其他类型,使得开发者无需深入了解图形编程细节就能轻松地生成高质量的图表。 **主要特性** 1. **多类型图表**:JFreeChart ...
JFreeChart 是一个广泛使用的 Java 图形库,它允许开发者创建各种图表,包括折线图、柱状图、饼图、散点图等,用于数据可视化。这个压缩包“jfreechart-1.0.13 示例”提供了一些示例代码,帮助开发者更好地理解和...
JFreeChart是一款流行的开源Java图表库,它提供了一系列丰富的图表类型,包括折线图、柱状图、饼图、散点图等,广泛应用于数据分析、报表生成以及GUI应用的可视化展示。在本文中,我们将深入探讨"jfreechart-1.0.6-...
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JFreeChart则是一个强大的Java图表库,能够帮助开发者生成各种复杂的图表,包括折线图。本教程将详细介绍如何在JSP中利用JFreeChart库来...
JFreeChart 是一个流行的开源Java库,用于创建各种图表,如饼图、柱状图、折线图、散点图以及时间序列图等。这个"jfreechart-1.0.1-demo.rar"文件是JFreeChart 1.0.1版本的演示程序,它包含了丰富的示例,帮助开发者...
JFreeChart是一个流行的开源Java库,用于创建各种图表,如折线图、柱状图、饼图、散点图等。它提供了丰富的功能,使得开发者能够在Java应用程序中轻松地生成高质量的图形。这个“jfreechart-1.0.19-demo.src”压缩包...
jfreechart-1.0.9-experimental 用于java后台绘制图形的jar包,如折线图 饼图 柱形图
java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图
1. **多样的图表类型**:JFreeChart 支持多种图表类型,如折线图、柱状图、饼图、甘特图、雷达图、热力图等,使开发者能够以可视化的方式展示复杂的数据集。 2. **丰富的定制选项**:用户可以通过调整颜色、字体、...
JFreeChart 是一个开源的Java库,用于生成高质量的2D图表,如折线图、饼图、柱状图和堆栈柱状图等。它广泛应用于数据分析、报告和应用程序中,提供丰富的自定义选项来满足各种视觉需求。在本项目中,你将找到能够...
JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,包括折线图、柱状图、饼图、散点图等。在本主题中,我们将深入探讨如何使用JFreeChart来绘制平面和3D的折线图。 首先,让我们了解折线图的基本...
JFreeChart是一个广泛使用的开源Java库,主要用于创建各种类型的图表,包括折线图、柱状图、饼图、散点图、甘特图等。在"jfreechart-1.0.14.rar"这个压缩包中,包含了JFreeChart的1.0.14版本,这是一个jar包,可以...
JFreeChart是一个流行的开源Java库,用于创建各种高质量的图表,包括折线图、柱状图、饼图、散点图、甘特图等。它在描述复杂数据集时提供了一种直观的方式,广泛应用于数据分析、报告生成和可视化应用中。JFreeChart...
jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707
Java实现jFreeChart--折线图-附件资源
1. 多样性:JFreeChart 支持多种类型的图表,包括折线图、柱状图、饼图、散点图、甘特图、雷达图、热力图等,满足不同场景的需求。 2. 高度定制:通过丰富的 API,开发者可以定制图表的颜色、样式、字体、数据标签、...