- 浏览: 259556 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jeans_1312:
...
JAVA检测字符串编码并转换 -
zenzuguo:
为啥我在eclipse tomcat6.0启动时总报错
Ma ...
appfuse2.0.2在eclipse下的开发和使用 -
josewu2009:
楼主我用你的方法在window机器 上 压缩后 ,解压文件时报 ...
java压缩文件夹下的所有文件和选定文件及乱码解决 -
TonyLian:
我觉得2楼提出的,只不过是看起来更漂亮而已,原写法也不会出现B ...
Ibatis动态查询例子(#和$以及iterate等的用法) -
zhaoshg:
谢谢 lemonweirui 的更正,帮我发现了一个bug,谢 ...
Ibatis动态查询例子(#和$以及iterate等的用法)
import java.awt.Color; import java.io.IOException; import java.text.SimpleDateFormat; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.jfree.chart.ChartFactory; 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.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.data.time.Day; import org.jfree.data.time.Hour; 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; /** * 用于将统计结果显示成走势图 * @author lord * 调用方法: TrendChart trendChart = new TrendChart(); trendChart.chartTitle = "走势图"; trendChart.chartSeriesDesc = "走势曲线"; trendChart.chartXdesc = "时间"; trendChart.chartYdesc = "价格"; trendChart.graphHigh = 400; trendChart.graphWidth = 600; trendChart.timeFormat = "yyyy-MM"; trendChart.periodType = TrendChart.DAY; ...... trendChart.addTimeSeriesUnitData(mYear, mMonth, mDay, mHour, (int)rData); trendChart.createTrendGraphByServlet(request, response); */ public class TrendChart { public final static String MONTH = "MONTH"; public final static String DAY = "DAY"; public final static String HOUR = "HOUR"; private JFreeChart rChart = null; //图表对象 public String chartTitle = ""; //图表标题 public String chartXdesc = ""; //X轴标题 public String chartYdesc = ""; //Y轴标题 public String chartSeriesDesc = ""; //曲线说明 public int graphWidth = 600; //默认宽度 public int graphHigh = 400; //默认高度 public String timeFormat = "MM/yyyy"; // 按日:MM-dd ,按小时:hh:mm // 用于标志用户选择的是按哪种查询统计周期类型(年、月、天、小时). // 年:YEAR, 月:MONTH, 天:DAY, 小时:HOUR public String periodType = ""; // 用于确定时间间隔 public int dateInterval = 0; //统计结果数据集 TimeSeriesCollection statDataset = new TimeSeriesCollection(); TimeSeries monthSeries = null; //月份统计图数据集合 TimeSeries daySeries = null; //天数统计图数据集合 TimeSeries hourSeries = null; //小时统计图数据集合 /** * 创建Servlet方式走势图表 * @param req * @param res * @throws IOException */ public void createTrendGraphByServlet(ServletRequest req, ServletResponse res) throws IOException { res.setContentType("image/jpeg"); setTimeSeriesStatType(); rChart = createTrendChart(); ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 1, rChart, graphWidth, graphHigh, null); } /** * 创建趋势图表 * @return JFreeChart 图表对象JFreeChart */ private JFreeChart createTrendChart(){ JFreeChart _freeChart = ChartFactory.createTimeSeriesChart(chartTitle, chartXdesc, chartYdesc, getTimeSeriesStatDataSet(), true, false, false); _freeChart.setBackgroundPaint(Color.white); XYPlot _xyplot = _freeChart.getXYPlot(); _xyplot.setOrientation(PlotOrientation.VERTICAL); _xyplot.setBackgroundPaint(Color.lightGray); _xyplot.setDomainGridlinePaint(Color.white); _xyplot.setRangeGridlinePaint(Color.white); _xyplot.setAxisOffset(new RectangleInsets(1.0, 2.0, 2.0, 10.0)); DateAxis dateaxis = (DateAxis) _xyplot.getDomainAxis(); if (periodType.equalsIgnoreCase("MONTH")){ if (dateInterval > 0) { dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH, dateInterval)); } }else if (periodType.equalsIgnoreCase("DAY")){ if (dateInterval > 0) { dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.DAY, dateInterval)); } }else if (periodType.equalsIgnoreCase("HOUR")){ if (dateInterval > 0) { dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.HOUR, dateInterval)); } } dateaxis.setDateFormatOverride(new SimpleDateFormat(timeFormat)); return _freeChart; } /** * 增加走势图数据 * @param periodType 区间类型 * @param year 年份 * @param month 月份 * @param day 日期 * @param hour 时间 * @param statData 统计数据 */ public void addTimeSeriesUnitData(int year, int month, int day, int hour, int statData) { if (periodType.equalsIgnoreCase("MONTH")){ if (monthSeries == null){ monthSeries = new TimeSeries(chartSeriesDesc, Month.class); } monthSeries.add(new Month(month, year), statData); }else if (periodType.equalsIgnoreCase("DAY")){ if (daySeries == null){ daySeries = new TimeSeries(chartSeriesDesc, Day.class); } daySeries.add(new Day(day, month, year), statData); }else if (periodType.equalsIgnoreCase("HOUR")){ if (hourSeries == null){ hourSeries = new TimeSeries(chartSeriesDesc, Hour.class); } hourSeries.add(new Hour(hour, day, month, year), statData); } } /** * 设置走势图统计的区间类型 * @param periodType 区间类型 */ private void setTimeSeriesStatType() { if (periodType.equalsIgnoreCase("MONTH")){ statDataset.addSeries(monthSeries); }else if (periodType.equalsIgnoreCase("DAY")){ statDataset.addSeries(daySeries); }else if (periodType.equalsIgnoreCase("HOUR")){ statDataset.addSeries(hourSeries); } } /** * 获得时序图的统计数据 * @return XYDataset 统计数据 */ private XYDataset getTimeSeriesStatDataSet() { statDataset.setDomainIsPointsInTime(true); return statDataset; } public int getDateInterval() { return dateInterval; } public void setDateInterval(int dateInterval) { this.dateInterval = dateInterval; }
JSP调用代码如下:
TrendChart trendChart = new TrendChart(); trendChart.chartTitle = "一年走势图"; trendChart.chartSeriesDesc = "走势曲线"; trendChart.chartXdesc = "时间"; trendChart.chartYdesc = "价格"; trendChart.graphHigh = 400; trendChart.graphWidth = 600; trendChart.timeFormat = "yyyy-MM"; trendChart.periodType = TrendChart.DAY; double baseData = 100.0; double rData = baseData; java.util.Calendar calendar = java.util.Calendar.getInstance(); calendar.set(2007, 0, 0); for (int i = 1; i <= 365; i++){ rData = rData * (1 + (Math.random() - 0.495) / 10.0); calendar.add(java.util.Calendar.DAY_OF_MONTH, 1); System.out.println(calendar.get(java.util.Calendar.YEAR) + "||" + (calendar.get(java.util.Calendar.MONTH) + 1) + "||" + calendar.get(java.util.Calendar.DAY_OF_MONTH) + "||" + (calendar.get(java.util.Calendar.HOUR_OF_DAY) + "||" + calendar.get(java.util.Calendar.MINUTE)) ); int mYear = calendar.get(java.util.Calendar.YEAR); int mMonth = calendar.get(java.util.Calendar.MONTH) + 1; int mDay = calendar.get(java.util.Calendar.DAY_OF_MONTH); int mHour = calendar.get(java.util.Calendar.HOUR_OF_DAY); trendChart.addTimeSeriesUnitData(mYear, mMonth, mDay, mHour, (int)rData); } trendChart.createTrendGraphByServlet(request, response);
显示图结果如下:
发表评论
-
JProfiler 7.X注册码
2013-05-09 11:23 2370L-Larry_Lau@163.com#24777-1i8 ... -
JVM介绍
2012-03-23 09:52 1070JVM 一、什么是Java虚拟机 当你谈到Jav ... -
Velocity语法
2012-03-22 18:20 1265一、基本语法 1、& ... -
Java排列组合算法
2012-03-11 23:07 3896import java.util.ArrayList; ... -
UrlRewrite使用小结(转)
2011-09-01 10:37 1381urlrewrite顾名思义,就是 ... -
JAVA检测字符串编码并转换
2011-08-03 14:15 5999就一个类,detectUtf8(String w3UrlPar ... -
JAVA NIO 简介
2011-03-09 13:20 967http://www.iteye.com/topic/8344 ... -
解读NIO Socket非阻塞模式
2011-03-09 11:58 1409前言: jdk供的无阻塞I/O(NIO)有效解决了多 ... -
一台机器运行多个JBoss多实例
2011-02-28 10:12 7656我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JB ... -
如何使 maven+jetty运行时不锁定文件
2011-02-23 13:07 2688原因是Jetty会使用内存映射文件来缓存静态文件,其中包括js ... -
java压缩文件夹下的所有文件和选定文件及乱码解决
2010-12-27 15:04 2324在linux下,如果文件夹内的文件是中文名,那么压缩后,这些文 ... -
Json-lib在Json转Java时日期为空处理出错的解决办法
2010-12-07 20:03 12156我在处理json和java的相互转换中出现这样 ... -
二进制、八进制、十进制、十六进制
2010-11-06 12:57 1877一、 十进制与二进 ... -
WebService开发经验(转载)
2010-11-05 08:52 1990去年,在一个大型项目(1500w)中用到Web Servi ... -
根据sessionId获取Session对象
2010-10-22 15:51 7660Servlet2.1之后不支持SessionContext里面 ... -
Dom4J工具类
2010-09-17 16:34 2297import java.io.File; import ja ... -
Spring事务配置的五种方式
2010-09-02 17:20 909Spring配置文件中关于事务配置总是由三个组成部分, ... -
java webservice的发布以及调用
2010-08-25 13:13 6080安装axis 下载:http://ws.apache.org/ ... -
利用Spring的AOP来配置和管理你的二级缓存(EHCache)
2010-08-03 16:23 1011如果我们的项目中采用的是Spring+hibernate来构 ... -
Java操作XML文件 dom4j 篇
2010-07-30 16:44 1084在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它 ...
相关推荐
在本示例中,我们将重点关注如何使用JFreeChart绘制曲线图,以及如何在数据点上显示具体的数据值。 首先,要使用JFreeChart,你需要在项目中引入其相关的jar文件。这个压缩包中包含的"jfreechartDemo"可能是一个...
JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。本文将通过引领...
本项目结合Applet和JFreeChart,目的是实现在网页上动态展示曲线走势图。 首先,理解Applet的基本概念是必要的。Applet是Java平台早期的一种特性,允许开发者创建可以在浏览器中运行的交互式小程序。为了在网页上...
本文将基于提供的代码片段,深入探讨如何使用JFreeChart实现实时更新的曲线图。 ### 实现原理 在Java中使用JFreeChart创建实时曲线图,主要涉及以下几个关键步骤: 1. **创建时间序列(Time Series)**:时间序列...
《使用JFreeChart生成曲线、柱状图、饼状图、分布图展示到JSP》 JFreeChart是一个强大的Java库,它允许开发者创建各种类型的图表,包括曲线图、柱状图、饼状图和分布图等。在当前JS图表库盛行的时代,JFreeChart...
在JFreeChart中,`PolarChartDemo1`类提供了一个示例,创建`StandardPolarItemRenderer`渲染器,通过`PolarPlot`和`PolarAxis`设置数据和轴的属性,然后使用`createPolarChart()`方法构建雷达图。 4. **Test.java**...
jFreeChart是java编程语言中一个功能强大、开源免费的图表库,能够生成各种类型的图表,包括曲线图、饼状图、柱状图等。通过jFreeChart,可以快速地生成高质量的图表,以满足不同领域的需求。 jFreeChart核心对象类...
在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JFreeChart则是一个强大的Java图表库,能够生成各种类型的图表,包括曲线图和柱形图。本项目结合两者,旨在实现数据可视化,使得Web应用可以...
在本篇博客中,"JfreeChart画双Y轴折线图"的主题,将探讨如何使用JFreeChart库来创建具有两个独立Y轴的折线图,这对于显示不同尺度或单位的数据对比非常有用。 首先,我们需要了解JFreeChart的基本结构。JFreeChart...
首先,让我们了解如何使用JFreeChart来创建基本的雷达图。在JFreeChart中,你需要创建一个`CategoryDataset`来存储你的数据,这个数据集可以包含多个系列(series)和每个系列中的多个类别(categories)。对于雷达...
要创建一个与Oracle数据库连接的曲线图,首先需要从数据库中获取数据,然后使用JFreeChart将这些数据转化为可视化的图形。 以下是一个简单的步骤概述: 1. **数据获取**:使用JDBC(Java Database Connectivity)...
本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart的基本结构。jfreechart的核心是ChartFactory,它提供了许多种类的图表的工厂方法。例如,createPolarChart方法可以创建一个极坐标图。...
JFreeChart是一款强大的Java图形库,它为开发者提供了丰富的图表类型,包括柱状图、曲线图和饼图等,使得在Java应用中展示数据变得更加直观和美观。在本篇文章中,我们将深入探讨如何利用JFreeChart来创建这些图表,...
在使用JFreeChart实现实时曲线图之前,需要了解JFreeChart的一些基本概念。JFreeChart是一个基于Java的图表库,提供了丰富的图表类型和自定义功能。下面是一些基本概念: * `JFreeChart`:JFreeChart的核心类,负责...
Java 使用 JFreeChart 创建柱形图是一种常见的数据可视化方法,尤其在数据分析和Web应用程序中。JFreeChart 是一个强大的开源库,它提供了多种图表类型,包括柱形图、饼图、线图等,使得开发者能够方便地将数据转化...
没啥说的...比较有用
用jfreechart实现动态曲线,有系统产生随机数,然后画出曲线,并能实时显示曲线
利用jfreechart绘制的横向立体柱状图,横坐标是数值,纵坐标是数据分类,需要提前引入jfreechart包文件到工程里,才不会报错
K线图的实例哦,这个好点,那个我乱改拉``