Jfreechart关联数据库生成时间曲线图

jfreechart+sql实现时间曲线图 前不久为公司客户写了个曲线图的程序用jsp帮助实现的,当中遇到了不少的问题,后来在ITPUB的一些朋友和自己的辛苦努力下终于完成了该程序学会了自己看API来写程序,正如ITPUB的一位老将所言,如果不会看API,还是放弃编程,在这次事件之后,确实发现,API是编程时不可或缺的“工具”,hoho在这里把我使用的例子写出来,其中的参数只作参考fableking17@163.com> 阅读详情

<%
/**
 * 这个页面主要用于显示某个气站某个日期内的温度曲线图
 * time:2005-04-18
 * @author:伊扬
 * @version 1.0
 */
%>
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import = "java.awt.Color,
                    java.awt.Font,
                    java.io.*,
                    java.sql.*,
                    java.sql.ResultSet,
                    java.sql.ResultSetMetaData,
                    java.util.ArrayList,
                    java.util.*,
                    org.jfree.chart.ChartFactory,
                    org.jfree.chart.ChartPanel,
                    org.jfree.chart.JFreeChart,
                    org.jfree.chart.servlet.ServletUtilities,
                    org.jfree.chart.*,
                    org.jfree.chart.axis.AxisSpace,
                    org.jfree.chart.StandardLegend,
                    org.jfree.chart.axis.DateAxis,
                    org.jfree.chart.plot.XYPlot,
                    org.jfree.chart.renderer.StandardXYItemRenderer,
                    org.jfree.chart.renderer.XYItemRenderer,
                    org.jfree.data.XYDataset,
                    org.jfree.data.time.Hour,
                    org.jfree.data.time.Minute,
                    org.jfree.data.time.Day,
                    org.jfree.data.time.TimeSeries,
                    org.jfree.data.time.TimeSeriesCollection"
%>
<%
String WellId=request.getParameter("WellID");//取需要查询的井号
String Transtime=request.getParameter("Transtime");//取需要查询的日期
String Para=request.getParameter("Para");//取需要查询的参数
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mis";//mis是数据库名称
String user="sa";//用户名
String password="";//用户密码
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
int i=0;
int j=0;
double[] row=new double[144];
Day days=new Day();//生成一个日子以产生当日的24个小时
       TimeSeries s1 = new TimeSeries("输气站"+WellId+" "+Transtime+""+Para, Minute.class);
for (j=0;j<24;j++){//分别对每个小时进行数据取值,每小时取6个
     int m=0;
     String sql="SELECT "+Para+" , Transtime FROM Trans_Gas WHERE (CONVERT(varchar(10), Transtime, 20) = '"+Transtime+"') AND (WellId = '"+WellId+"')"+
                " and ({ fn HOUR(Transtime) } ="+j+")";
     ResultSet rs=stmt.executeQuery(sql);
     while (rs.next()&& m<6){
     row[6*j+m]=rs.getDouble(1);
     rs.next();
     i++;
     m++;
     }
     if (m<6){//如果这个小时内没有6个值,则填0
       for (int k=m;k<6;k++){
       row[6*j+k]=0;
       }
     }
      Hour hour=new Hour(j,days);
      s1.add(new Minute(0, hour), row[6*j]);
      s1.add(new Minute(10, hour), row[6*j+1]);
      s1.add(new Minute(20, hour), row[6*j+2]);
      s1.add(new Minute(30, hour), row[6*j+3]);
      s1.add(new Minute(40, hour), row[6*j+4]);
      s1.add(new Minute(50, hour), row[6*j+5]);
}     TimeSeriesCollection dataset = new TimeSeriesCollection();
      dataset.addSeries(s1);

       dataset.setDomainIsPointsInTime(true);
JFreeChart chart = ChartFactory.createTimeSeriesChart(
           "输气站"+WellId+" "+Transtime+""+Para+"走势图",
           "时间",Para+"值",
           dataset,
           true,
           true,
           false
       );

       //chart.setBackgroundPaint(Color.white);

       StandardLegend sl = (StandardLegend) chart.getLegend();
       sl.setDisplaySeriesShapes(true);

       XYPlot plot = chart.getXYPlot();
       plot.setBackgroundPaint(new Color(136,189,193));//设置背景颜色
       plot.setDomainGridlinePaint(Color.white);//设置网格竖线颜色
       plot.setRangeGridlinePaint(Color.white);//设置网格横线颜色
       //plot.setDomainTickBandPaint(new Color(33,66,99));//设置隔段块颜色
       //plot.setFixedDomainAxisSpace(new AxisSpace());//填充固定轴空白
       XYItemRenderer renderer = plot.getRenderer();
       if (renderer instanceof StandardXYItemRenderer) {
           StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
           rr.setPlotShapes(true);//true为每一个值画一个小方块
           rr.setShapesFilled(true);//true表示填充每个小方块
       }

       DateAxis axis = (DateAxis) plot.getDomainAxis();

String filename = ServletUtilities.saveChartAsPNG(chart,1024, 600, null, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" width=1024 height=600 border=0 usemap="#<%= filename %>">

OpenClaw + Ollama 本地大模型部署教程:彻底告别Token焦虑 阅读详情

相关推荐

华为防火墙双线路配置实战:5分钟搞定主备自动切换(含健康检查避坑指南)

本文详细介绍了华为防火墙双线路配置实战,包括主备自动切换和健康检查机制的优化技巧。通过智能健康检查机制,华为防火墙能实现毫秒级故障自动切换,确保网络高可用性。文章提供了从架构设计到实战配置的全流程指南,并分享了常见配置误区与解决方案,帮助中小企业快速搭建稳定可靠的网络架构。

weixin_30872337的博客 548

java中使用JFreeChart生成饼图和曲线图

最近项目中有个需求要根据不同的数据,生成一个饼图,用来表示各部分的占比情况,测试了很多,最后发现JFreeChart最简便实用,下面是具体实现过程1,pom文件中添加jar包的引用&lt;!--用于生成图片 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.jfree&lt;/groupId&gt; &lt;artifactId&gt;jf...

编码小王子的博客 1万+

使用 jfreechart 生成线、柱状图、饼状图、分布图 展示到JSP

虽然现在JS做报表和图形展示已经非常普遍和漂亮了,但是不能忽略有jfreechart 这样一种东西! 这些翻阅资料,在看以前写的示例时发现了关于jfreechart 的简单示例,不管怎样发上来分享一下!

Java使用JFreeChart绘制平滑曲线

其实JFreeChart就没有绘制曲线的功能,绘制折线图是可以的,但是我们可以通过数据量增大的方式,让点足够密集变成曲线,如果没有足够的数据量,可以通过后期算法加工的方式,在两个点之间获取很多的点形成曲线,我们这里使用的是ChartFactory.createLineChart方法绘制。......

Funky_oaNiu的博客 3977

JFreeChart生成坐标曲线图

JFreeChart生成坐标曲线图

xiejunna的博客 658

jfreechart简单介绍3---曲线图

摘要:前两节介绍了jfreechart的条形图、饼图,本节主要介绍jfreechart曲线图。 本节主要是用jfreechart包中自带的gui相关的类,实现曲线图GUI的简单效果。 preparation class ApplicationFrame类: RefineryUtilities类: ChartPanel类: method setContentPane() 由于网络...

weixin_30460489的博客 372

ubuntu 飞信插件安装

一,安装pidgin sudo apt-get install pidgin 这个默认应该是已经安装了的。 二,下载飞信插件,我下载的是0.97 http://forum.ubuntu.org.cn/download.php?id=30594 在ubuntu官方论坛的贴子地址 http://forum.ubuntu.org.cn/viewt ... storder=asc&sta...

pipalcn的专栏 193

ubuntu 11.10 (Oneiric)安装配置手记

# Install Jre on Ubuntu 11.10 Install Oracle JRE Using PPA) Open the terminal and run the following commands sudo add-apt-repository ppa:ferramroberto/java sudo apt-get update sudo apt-g...

云计算? 164

Ubuntu8.04上用飞信 libfetion

想在linux下使用飞信,多番尝试后成功了。使用了pidgin的插件libfetion 1. 从这个地方下载fetion插件源码和pidgin源码git clone git://github.com/gradetwo/fetion.git将下载后的fetion目录copy到pidgin-2.5.2/libpure/protocols/2. 修改pidgin-2.5.2下的c

FarleyZhang的专栏 2009

在 Ubuntu 上玩飞信

方法一:插件法 现在GRADETWO做出了一款PIDGIN的插件,使得我门广大的LINUX用户可以使用飞信 http://www.linuxsir.org/bbs/thread320802.html 这是最新版本的发行地址,需要的朋友可以从这里下载 PS:这里要注意一点,就是一定不要把发行版本弄错,这是前车之鉴,我就把发行版本弄错了 装了一个64位的版本,怎么弄都不成功,走了不少弯路 接下来解...

阿丰的专栏 226

在ubuntu 下使用飞信

在pidgin下用插件进行安装,实际上是添加飞信的一个协议。具体如下安装方法如下把文件放置到 $HOME/.purple/plugins/ 或者/usr/lib/purple-2/或者/usr/local/lib/purple-2/我是放在了/usr/lib/purple-2/下要求pidgin 2.4以上版本下载 fetion_v0.98-1.tar.gzhttp:/

助跑。。。。。。跳 607

ubuntu中使用飞信

第一步:下载 飞信的插件-----libfetion.so   下载地址:http://www.linuxidc.com/Linux/2008-09/16114.htm第二步:把它解压缩并保存到 /usr/lib/purple-2/ 下面(其他发行版可能是$HOME/.purple/plugins/ 或者/usr/local/lib/purple-2/ )。但是这个操作需要管理员权限    使用r

血色残阳的专栏 542

ubuntu下用飞信

不要用pidgin的插件.最好安装独立的Linux Fetion软件,直接下载deb安装包就可以了http://www.libfetion.cn/Linux_demoapp_download.html

abchcc的专栏 257

UBUNTU 10.04 安装配置

1. 通过livecd安装UBUNTU 10.04 2. 配置IP地址,使其能够上网 3. 更新网络源。 sudo gedit /etc/apt/sources.list 可以采用网易的,代码如下 deb http://mirrors.163.com/ubuntu/ lucid main universe restricted multiverse deb-src http://mi

r91987的专栏 1761

ubuntu12.10 安装软件总结

Ubuntu12.10的安装 1.      下载ubuntu安装包,下载后得到:ubuntu-12.10-desktop-i386.ios镜像文件。然后解压 2.      双击wubi.exe,然后安装ubuntu。注意,在此之前要将要将本地磁盘的名字都修改为英文名,如:“本地磁盘”改为“LocalDisk”。下面是一些选项:目标驱动器是将Ubuntu安装到哪个磁盘下。可以自己选择。安

郑海波(莫川)的CSDN博客 2853

Ubuntu常用软件安装,持续更新中。。。

 安装配置Ubuntu,主要是配置系统的字体、程序常用的插件、常用多媒体编码插件,以及java应用环境等。这只需在新利得软件包管理器中搜索并安装“ubuntu-restricted-extras”软件包即可,一次性完成安装配置。当然,我们也可以使用终端:sudo apt-get install ubuntu-restricted-extras安装成功后多数常用的插件和应用环境就搭建好了,可

By Ulric Qin 1110

UBUNTU教程之菜鸟飞飞

<br />本文转自 http://bbs.ouc.edu.cn/dispbbs.asp?boardid=29&id=47751&star=1<br /> <br /> <br /> <br />本人绝力推动ubuntu在校园的普及<br />今日推出ubuntu完全攻略,已在海之子和IT兄弟连同步发布,有什么问题请在回复中说明,本人尽力解释<br />为准备本文,收集了很多资料,前几日,在ubuntu论坛看到有热心网友把一切都总结的很好了,虽然是在8.10基础上写的,但对于9.04也同样适用,为<br /

需求导向<=问题导向!本质导向!结果导向! 6277

Ubuntu下安装CodeBlocks、Fetion 、Flashplayer

1.Codeblocks 对于不习惯使用vim的同学,确实有必要安装一个可视化的C/C++编辑器。Ubuntu下的C/C++编辑器我最喜欢codeblocks。 现在的在ubuntu下是10.05版,主要特色,语法高亮,代码格式化,鼠标手势等,尤其是代码格式化,太方便了。 1、安装必要组件: sudo apt-get install build-essential sudo apt-ge

ace_5201314的专栏 1065

Firefox火狐浏览器官方32.0.3-win32版本exe安装包

解压后可用,资源全名:Firefox Setup 32.0.3.exe

eonbell
博客等级 码龄21年 1粉丝 1原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值