jfreechart实现动态图表

1.生成图形报表时一般使用制图工厂ChartFatory类进行创建,只有创建制图对象jfreechart后才能生成实际图片,然后可以设置图片边界,字体等属性
2.数据集合是用来装载绘图表所需要的数据集
核心对象---dataset接口
3.通过数据集合生成的数据图表通过绘图区对象进行属性设置,(背景色,透明度等)由plot类定义,plot有三个子类、
3--1.pieplot类:用来绘制饼形图
3--2,categoryplot类:支持折线图,区域图等
3--3,xyplot类:可以具有多个数据集合,
4.坐标轴对象:axis
4.1:categoryaxis类:对分类轴进行设置,
4.2:valueaxis类;对数据轴进行设置
4.2.1:numberaxis类:对数值类型数据轴进行设置
4.2.2:dateaxis类:对日期轴进行设置
5.abstactRenderer图片渲染对象:
6.制图过程:配置jfreechart,创建数据集合和jfreechart实例以及设置图标相关属性
6.1获取图片:课生成.jpeg,.png格式图片,一般由jfreechart组件进行管理来生成图片,

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
public class RealTimeChart extends ChartPanel implements Runnable
{
private static TimeSeries timeSeries;
private long value=0;
public RealTimeChart(String chartContent,String title,String yaxisName)
{
super(createChart(chartContent,title,yaxisName));
}
private static JFreeChart createChart(String chartContent,String title,String yaxisName){
//创建时序图对象
timeSeries = new TimeSeries(chartContent,Millisecond.class);
TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(timeSeries);
JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(title,"时间(秒)",yaxisName,timeseriescollection,true,true,false);
XYPlot xyplot = jfreechart.getXYPlot();
//纵坐标设定
ValueAxis valueaxis = xyplot.getDomainAxis();
//自动设置数据轴数据范围
valueaxis.setAutoRange(true);
//数据轴固定数据范围 30s
valueaxis.setFixedAutoRange(30000D);
valueaxis = xyplot.getRangeAxis();
//valueaxis.setRange(0.0D,200D);
return jfreechart;
}
public void run()
{
while(true)
{
try
{
timeSeries.add(new Millisecond(), randomNum());
Thread.sleep(300);
}
catch (InterruptedException e) { }
}
}
private long randomNum()
{
System.out.println((Math.random()20+80));
return (long)(Math.random()
20+80);
}
}
//Test.java
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class Test
{
/**
* @param args
*/
public static void main(String[] args)
{
JFrame frame=new JFrame("Test Chart");
RealTimeChart rtcp=new RealTimeChart("Random Data","随机数","数值");
frame.getContentPane().add(rtcp,new BorderLayout().CENTER);
frame.pack();
frame.setVisible(true);
(new Thread(rtcp)).start();
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent windowevent)
{
System.exit(0);
}
});
}
}
https://github.com/qingyibaimao/JFreeChart.git

嗯嗯加点东西,这个东西写出来时的一个文档

使用jfreechart技术实现数据的动态图表
1.主页面:
2.首先介绍下jfreechart,jfreechart是java的一个类包,主要负责实现柱状图,折线图,饼图的动态图,从而使数据可视化,便于更好更直观的查看数据
3.jfreechart技术实现:首先配置一个jfreechart自带类DisplayChart:该类用于将数据绘成图片从而展现出来:(注:该类是就freechart包自带类,只需在web.xml中配置url从而可以访问即可,不要再自己建一个DisplayChart类,否则会显示这个类一直报错,我再这一点整整苦恼了两天)

嘿嘿嘿其实就是一个servlet配置,再次说明,不要再自己建DisplayChart类,这个jfreechart的jar包里面有
嗯,该主角了,本来以为高大上的以为很牛逼,搞清楚之后核心就是两个方面,一个是创建数据集合,也就是获取你需要制图的数据,可以你自己手动添加,也可以连接数据库获取数据库值,当然也可以再引用其他包自动获取数据,必须我后来找的一个实时获取本机cpu,内存,缓冲区,交换区的信息,和一个获取java虚拟机信息的方法,当然也可以和嵌入式结合,往外面各个地方放点传感器啊然后将传感器获取的数据动态的传入进来做成一个动态折线图,那么就6了,当然我后来写的时候又一次突然想起来电脑的任务管理器里面,可以动态追踪CPU使用率啊什么,顿时感觉好牛逼,可是我再网上巴拉了好久,很遗憾没找到相关的类,好了回归正题
刚说到核心之一的创建数据集合,数据有了,那就剩下制图了,jfreechart里面包装了制作各种图的方法,只需要引用就行, 当然对这些图的美化也是各种各样
举个栗子吧:
第一个jdbc饼图,额就是我暑假留校这一段时间的消费情况吗,把数据写到了数据图里面,好了看代码:

额,这一块其实就是连接数据库获取数据,函数里面没啥说的,就是注意要实现PieDataset对象,引用了这个对象就可以把数据返回给jfreechart内部,从而在绘图的时候才能引用这个数据

然后,这一块就是绘图啦,首先实例JFreeChart组件,想画图就全靠这个了,因此这也是该技术的一个核心类组件,这一块每一句后面都添加了注释是干啥的,不过,只写这些是画不出一个图的,这个步骤只是把这个图需要的数据整到一块,并说明是画成一个什么样的图以及对这个图细节的修改
最后,开始画图了

对,看的没错,刚刚写的那两部分,一个获取数据,一个创建了一个制图对象,但是制图这个活还是交给jfreechart的一个ServletUtilities类的一个saveChartAsJPEG()方法实现的,在改方法中引入制图对象,图的长和宽以及一个HttpSession对象,然后到这里图片就生成了,然后图片有了,可是他在哪?
这就要用到一直强调的不用自己建类的DisplayChart,通过getContextPath()+"/servlet/DisplayChart?filename="+filename

至于后面的输出问题,怪我是个直男咯一点点css的东西都不想加,就默默做个安静的后台码农吧
好了继续来个时序图

这个,就说下数据获取和图对象的制作吧

是的,获取随机数啦

然后还是获取jfreechart对象然后对图片进行渲染处理了,各个不同图的区别就在于一个制图对象的不同,每个图有相对应的方法去处理相应的对象,而图片制作和获取图片的方法是一模一样的
然后你以为结束了?
不,还有一个获取本机电脑信息的类啊:sigar包
这个包,可以获取很多东西,
cpu信息

每块CPU的使用信息

内存和交换区信息

硬盘信息

以及我自己也不知到的是什么东西的东西

这些是总结官方文档里的方法写的,总结一下,电脑砸了吧,可以换新的了,2333
就大致说下获取CPU,内存,交换区的方法吧
先看下cpu使用信息吧,还是挺不错得,够用了

至于内存的话

4G真的不够用啊,感觉8G最低标配啊,攒钱买吧
看如何获取CPU信息吧,是的就这3个步骤,实例化sigar,获取里面的cpu对象,然后使用各种方法了,就是那么简单,内存和其他的也是一样的

获取交换区的
获取内存信息

额,有点少,可是,没办法,结束了,另附下github地址里面有完整代码
https://github.com/qingyibaimao/JFreeChart/releases/tag/JFreechart

代码截图没插进来,已经1点了该睡觉了有点懒就不加了。代码可以去github里看
大家晚安,明天继续努力,学习练习做项目,早日赚钱给大哥买小院子,嗯,就是这样,Bye

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,279评论 25 707
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,537评论 18 399