当前位置: 技术问答>java相关
如何用java做数据曲线图?
来源: 互联网 发布时间:2015-11-18
本文导语: 大家好!: 我要做一个曲线图,反映库里的数据随着时间的变化情况,该如何实现呢?谢谢! | 不了解!不过帮你查了一下: http://biosoft.im.ac.cn/other.html里面有个软件用java做的曲线图 你可...
大家好!:
我要做一个曲线图,反映库里的数据随着时间的变化情况,该如何实现呢?谢谢!
我要做一个曲线图,反映库里的数据随着时间的变化情况,该如何实现呢?谢谢!
|
不了解!不过帮你查了一下:
http://biosoft.im.ac.cn/other.html里面有个软件用java做的曲线图
你可以反编译看一下!
还有帮你查了一些数据!你看看
http://www.google.com/search?q=java%E6%9B%B2%E7%BA%BF%E5%9B%BE&ie=UTF-8&oe=UTF-8&hl=zh-CN&lr=lang_zh-CN
http://www.codingnow.com/program/hilbert.htm
http://biosoft.im.ac.cn/other.html里面有个软件用java做的曲线图
你可以反编译看一下!
还有帮你查了一些数据!你看看
http://www.google.com/search?q=java%E6%9B%B2%E7%BA%BF%E5%9B%BE&ie=UTF-8&oe=UTF-8&hl=zh-CN&lr=lang_zh-CN
http://www.codingnow.com/program/hilbert.htm
|
一、引言
在熙熙攘攘的Internet上制作极富个性化的主页、及时发布令人心动的信息
,以便吸引全世界不同肤色、不同职业的人们驻"足"观看,以致流连忘返,甚者慷慨
解囊,是Internet冲浪者心中的梦想。通过合理运用HTML脚本语言提供的表格、列
表、字体和段落的格式化、多媒体支持等,能使网页内容清晰、层次分明、可读性
强,这些已有众多文献论述,在此不再赘述。
我们知道,在各种信息中,统计信息堪称是用得较多、具有相当说服力的信息
,而表达统计数据最直观的方式是根据这些数据绘制曲线。文献[1]用相当的篇幅
介绍了如何在Windows操作系统中编写一个具有OLE服务器能力的统计曲线绘制工
具,而本文的主题则是:如何利用Java对绘图的支持,编写一个根据统计数据绘制曲
线的小程序(Applet)Plot,通过把Plot编译生成的字节码文件Plot.class嵌入到H
TML脚本中,从而实现在网页上发布统计曲线的目的。
二、Java编程概述
1.Java语言规范
Java继承了C++的基本语法,摒弃了一些过时的特征,比如预编译的头文件、宏
、条件编译,数据结构的结构体、枚举体和联合体,容易导致安全性问题的指针,以
及晦涩难懂的多重继承等,借鉴了Objective C的接口和Ada的包(package),以及内
置了Internet网络所需要的基本特征:结构中立(任何芯片、任何操作系统可以运
行同一版本的Java程序)、安全性(避免感染病毒和防止非法访问)、多线程和网络
通信等。事实上,上述被Java抛弃的特征,如指针和类的多重继承,都是由于太复杂
而遭C++程序员诅咒的;而新发展的特征,如结构中立、安全性、多线程和网络通信
等,是C++程序员极想实现而又非常难实现的特征。
2.JDK
Windows程序员一定都知道做Windows开发要用Windows SDK(软件开发工具),
现在,做Ja va开发的程序员也都知道编写Java小程序要用JDK(Java开发工具)了。
然而,与SDK主要采用结构体和函数等面向过程的方式提供Windows编程接口不同,
JDK采用包、界面和类等面向对象的方式提供Java编程接口。从这种意义上说,JD
K与Microsoft Visual C++的MFC,或者Bor land C++的OWL相似:它是一个类库,一
个应用框架,一个无缝集成的解决方案。
最先发布的JDK应该算JDK 1.0.3α,它是1995年Sun公司在全球范围内进行Ja
va程序设计大奖赛时随HotJava 1.0.3α发放的。在该版本中,通用包实现得比较
少,只有java.lang、j ava.util和java.io,而其他有关用户界面和网络通信的包
都在HotJava中提供。尔后发行了1.0版,这是提供给各Java平台开发公司的,其中
,包全部独立出来,共八个:java.applet、ja va.awt 、java.awt.image 、java.
awt.peer 、java.io、java.lang、java.net 和java. util 以及一个sun.tools
.debug。本文的程序基于1.0版本编写。由于1.0.3α和1.0两个版本的包安排差别
很大,因而用前一个版本编写的程序在后一个版本的编译工具中编译有可能通不过
,要作修改。在1996年8月底,Sun公司在Internet上发布了1.1版,1.1版在1.0版基
础上稍有改进,两个版本保持完全的兼容。
三、设计目标和程序构思
现在我们回到本文的主题上。首先,考虑编写一个Java小程序,它的界面和功
能可以这样来描述:
统计标题和统计数据由HTML的param标注提供,统计数据的个数没有限制;
根据数据的取值画出带刻度的X、Y轴;
在用线连接每个数据点的同时标出该点的坐标值;
提供绘制三组曲线的选择。
针对上述要求,考虑构造两个类来完成:Curve类用于实现绘制统计曲线的各个
方面;Plo t类则派生于Applet,它是本程序的小程序类,通过使用Curve类来完成统
计曲线的绘制。鉴于篇幅,下面给出实现要点及其程序。如需要全部源代码的读者
,请与笔者联系。
1.Curve类
Curve类构造主要基于以下几点考虑。
(1)基类。Curve从Java所有类的基类Object派生,那么就可以不显式声明了。
class Curve {
......
}
(2)绘图环境。根据Windows等窗口操作系统的编程经验,向显示器、打印机等
输出设备绘图是通过绘图环境来实现的。由于Java要面向所有平台,包括Windows
、Unix和Macintosh 等,它们的绘图环境(如显示器)概念很不一样。那么,Java如
何来实现绘图呢?原来,Java在java.awt包中通过Graphics类来提供了对各种绘图
设备的设备环境的抽象类封装。用Window s编程来作对照,Graphics所代表的概念
就是Windows GDI的设备环境(Device Context),也就是MFC中CDC类或OWL的TDc类
。有了这样的比较,对Graphics就比较好理解了。也就是,所有绘制直线、矩形、
椭圆、多边形、设置字体、绘制文本等操作,调用Graphics类中的相应方法即可。
下面代码是通过Curve构造器将小程序类Plot的设备环境对象g传递给Curve,以被
其他各个绘制方法使用:
public Curve(Graphics g)
{
myGC = g;
......
}
(3)绘制算法。绘制算法就是绘制统计曲线的实现方法,包括绘制标题、坐标
轴、数据联线、标出数据点坐标等,以及其逆过程:清除这些绘制(因为当绘制其他
曲线时,得保证刷新前一次绘制的所有内容)。鉴于篇幅,下面仅给出显示数据的方
法实现showData.
public synchronized void showData(Vector v)
{
float maxY=0;
myGC.setColor(Color.red);
int xPoint;
int yPoint;
//确定Vector中的最大值。
for(int i = 0; i maxY)
{
maxY = temp;
}
}
//确定第一个数据点的X坐标。
xPoint = xOrigin + (xSpacing/2);
int oldX = 0;
int oldY = 0;
//在数据点处绘制一个小圆圈。
for(int j = 0; j
在熙熙攘攘的Internet上制作极富个性化的主页、及时发布令人心动的信息
,以便吸引全世界不同肤色、不同职业的人们驻"足"观看,以致流连忘返,甚者慷慨
解囊,是Internet冲浪者心中的梦想。通过合理运用HTML脚本语言提供的表格、列
表、字体和段落的格式化、多媒体支持等,能使网页内容清晰、层次分明、可读性
强,这些已有众多文献论述,在此不再赘述。
我们知道,在各种信息中,统计信息堪称是用得较多、具有相当说服力的信息
,而表达统计数据最直观的方式是根据这些数据绘制曲线。文献[1]用相当的篇幅
介绍了如何在Windows操作系统中编写一个具有OLE服务器能力的统计曲线绘制工
具,而本文的主题则是:如何利用Java对绘图的支持,编写一个根据统计数据绘制曲
线的小程序(Applet)Plot,通过把Plot编译生成的字节码文件Plot.class嵌入到H
TML脚本中,从而实现在网页上发布统计曲线的目的。
二、Java编程概述
1.Java语言规范
Java继承了C++的基本语法,摒弃了一些过时的特征,比如预编译的头文件、宏
、条件编译,数据结构的结构体、枚举体和联合体,容易导致安全性问题的指针,以
及晦涩难懂的多重继承等,借鉴了Objective C的接口和Ada的包(package),以及内
置了Internet网络所需要的基本特征:结构中立(任何芯片、任何操作系统可以运
行同一版本的Java程序)、安全性(避免感染病毒和防止非法访问)、多线程和网络
通信等。事实上,上述被Java抛弃的特征,如指针和类的多重继承,都是由于太复杂
而遭C++程序员诅咒的;而新发展的特征,如结构中立、安全性、多线程和网络通信
等,是C++程序员极想实现而又非常难实现的特征。
2.JDK
Windows程序员一定都知道做Windows开发要用Windows SDK(软件开发工具),
现在,做Ja va开发的程序员也都知道编写Java小程序要用JDK(Java开发工具)了。
然而,与SDK主要采用结构体和函数等面向过程的方式提供Windows编程接口不同,
JDK采用包、界面和类等面向对象的方式提供Java编程接口。从这种意义上说,JD
K与Microsoft Visual C++的MFC,或者Bor land C++的OWL相似:它是一个类库,一
个应用框架,一个无缝集成的解决方案。
最先发布的JDK应该算JDK 1.0.3α,它是1995年Sun公司在全球范围内进行Ja
va程序设计大奖赛时随HotJava 1.0.3α发放的。在该版本中,通用包实现得比较
少,只有java.lang、j ava.util和java.io,而其他有关用户界面和网络通信的包
都在HotJava中提供。尔后发行了1.0版,这是提供给各Java平台开发公司的,其中
,包全部独立出来,共八个:java.applet、ja va.awt 、java.awt.image 、java.
awt.peer 、java.io、java.lang、java.net 和java. util 以及一个sun.tools
.debug。本文的程序基于1.0版本编写。由于1.0.3α和1.0两个版本的包安排差别
很大,因而用前一个版本编写的程序在后一个版本的编译工具中编译有可能通不过
,要作修改。在1996年8月底,Sun公司在Internet上发布了1.1版,1.1版在1.0版基
础上稍有改进,两个版本保持完全的兼容。
三、设计目标和程序构思
现在我们回到本文的主题上。首先,考虑编写一个Java小程序,它的界面和功
能可以这样来描述:
统计标题和统计数据由HTML的param标注提供,统计数据的个数没有限制;
根据数据的取值画出带刻度的X、Y轴;
在用线连接每个数据点的同时标出该点的坐标值;
提供绘制三组曲线的选择。
针对上述要求,考虑构造两个类来完成:Curve类用于实现绘制统计曲线的各个
方面;Plo t类则派生于Applet,它是本程序的小程序类,通过使用Curve类来完成统
计曲线的绘制。鉴于篇幅,下面给出实现要点及其程序。如需要全部源代码的读者
,请与笔者联系。
1.Curve类
Curve类构造主要基于以下几点考虑。
(1)基类。Curve从Java所有类的基类Object派生,那么就可以不显式声明了。
class Curve {
......
}
(2)绘图环境。根据Windows等窗口操作系统的编程经验,向显示器、打印机等
输出设备绘图是通过绘图环境来实现的。由于Java要面向所有平台,包括Windows
、Unix和Macintosh 等,它们的绘图环境(如显示器)概念很不一样。那么,Java如
何来实现绘图呢?原来,Java在java.awt包中通过Graphics类来提供了对各种绘图
设备的设备环境的抽象类封装。用Window s编程来作对照,Graphics所代表的概念
就是Windows GDI的设备环境(Device Context),也就是MFC中CDC类或OWL的TDc类
。有了这样的比较,对Graphics就比较好理解了。也就是,所有绘制直线、矩形、
椭圆、多边形、设置字体、绘制文本等操作,调用Graphics类中的相应方法即可。
下面代码是通过Curve构造器将小程序类Plot的设备环境对象g传递给Curve,以被
其他各个绘制方法使用:
public Curve(Graphics g)
{
myGC = g;
......
}
(3)绘制算法。绘制算法就是绘制统计曲线的实现方法,包括绘制标题、坐标
轴、数据联线、标出数据点坐标等,以及其逆过程:清除这些绘制(因为当绘制其他
曲线时,得保证刷新前一次绘制的所有内容)。鉴于篇幅,下面仅给出显示数据的方
法实现showData.
public synchronized void showData(Vector v)
{
float maxY=0;
myGC.setColor(Color.red);
int xPoint;
int yPoint;
//确定Vector中的最大值。
for(int i = 0; i maxY)
{
maxY = temp;
}
}
//确定第一个数据点的X坐标。
xPoint = xOrigin + (xSpacing/2);
int oldX = 0;
int oldY = 0;
//在数据点处绘制一个小圆圈。
for(int j = 0; j